I was trying to figure out which of these is best for me, by asking users and looking online. Consensus seems to be that:
Ansible is the easiest to grok/deploy unless you're a Ruby person. All the users are happy with what it provides, only complaints I could find were about its speed in large-y deplyoments (>500) - and that seemed to be addressed by Fireball mode in the past, and the new daemon mode in newer versions - though I haven't actually found testaments for that.
Salt seems to click for some people, is too complicated for others. Had a couple of security issues (e.g. http://www.openwall.com/lists/oss-security/2013/07/01/1 since addressed - but it is a smell when people who shouldn't roll their own crypto)
Chef and Puppet seem to work great, and you can find lots of support for them, but are heavier and seem to require more setup (e.g. chef "minions" which are agents on the managed machines, even though there's some kind of no-setup-needed mode)
Windows seems to be an outcast as far as management servers go. Some people get it to work, non recommend it. But I don't care about provisioning Windows, so I didn't delve into what's actually possible.