Salt is missing templates, the ability to use higher level programming language and all the environment/roles that I find the most powerful part of Chef.
You are wrong on all counts here. Salt supports Jinja2 template engine, so you can template your states [1]. You define custom states in python [2]. In the root configuration file (top.sls) you target configuration based on host name, grains (machine specific information) [3].
jinja2 and mako are supported, and you can even write your own renderer without much effort if a templating language is not supported.
There's even a renderer for pure python, allowing one to write config files in python for more control and flexibility.
One wonders if you've ever actually tried Salt. It really is OK to have an approach of: "I like Chef and it works for me." More power to you. Everyone should use the tool that works for them.