All the tools that you have mentioned (Jenkins, ant, git )help to actually build and test your artifact. In java world usually this can be war, ear or just zip with the application inside. Sometimes for complicated applications it can be more than one artifact. For other programming platforms it may vary, DLLs, binaries for multiple different platforms and so forth.
Now lets say you want to deploy your application. If you have one server you can do it manually or with some homegrown script. So far so good :)
But what if you have a lot of farms (groups of machines), different farms should have deployments with different configurations (databases, different geographical locations) What if your application may scale horizontally so that adding a couple of new nodes to the farm should be a trivial task. Your QA team may just ask for a new environment to run their tests, your performance team can ask for a new environment or add nodes to the farm to run stress tests and so on. Now managing all this stuff seems to be complicated. That's where tools like ansible, chef, salt, puppet and others come into play.
These are actually helping to automate deployment. They can provide recipes of deployment, install missing dependencies (in order to run your project may require jre, tomcat of specific version and nginx for static content ). All this at the level of farm.
I know the answer is too generic and may seem less obvious for java developer (I'm one of those ).
But if you have a team of system/devops guys they should immediately point on benefits of these tools.