Juan Treminio has written up an introductory post to Puppet and Vagrant and their use to make virtual machines for your PHP environments.
Why should I use a virtual machine? Being a PHP developer has a much lower barrier to entry than Python, Ruby. Only Javascript is easier to start with. Tools such as XAMPP, MAMP, Homebrew, etc, make installing a basic LAMP stack on your computer extremely easy. So why would you want to give this up and use a slow, bulky and cryptic virtual machine?
He notes that the Puppet+Vagrant combination solves some of the common problems developers have setting up environments. He goes through what the two tools are and shows (screenshots) what the results look like. He includes a sample Puppet manifest, its configuration file, that loads an environment with PHP 5, Apache, a virtual host, PEAR, Composer and some other various configuration settings. He also mentions his PuPHPet tool he's created to make generating these kinds of configuration files simpler.