First of all, talking about Puppet and Chef are in the same area, be it configuration or management tools. Their use cases are also exactly the same, they are competitors to each other.
Talking about Vagrant it is a development environment setup tool. If you want to test if the app you wrote for the Linux box but your laptop is a Mac, then Vagrant is for you.
Now talking about Docker, it really brings a lot of disruption. For example, your environment is something described as 'secondly', then with thinks like boot2docker, you can achieve what you wanted.
In order to learn all these techniques together and to grab a valuable certificate in them you can have a look at the following DevOps Training Course. If you like to read then you can read the following tutorial on DevOps. To watch the free video tutorials on Docker you can visit the below-mentioned website:-