Puppet is an immensely powerful tool and essential for everyone managing more than one machine (it's useful even if you only have one machine). Most of us have had the experience of going through a long and complicated manual process of setting up a new server or workstation to the point where it's ready to use. Puppet lets you do this work at a higher level: you specify the packages and settings that you want, and Puppet will make all the necessary changes to bring the machine into line with your specification.
This means your systems are automatically documented, and the documentation is guaranteed to be up to date, because the systems themselves are built from the documentation. In addition, you can easily apply the same configuration to a new or replacement server, cutting build time from hours to minutes.
Puppet really comes into its own when using cloud services like EC2. You only need to specify a server once, and then you can use Puppet to build 10 or 100 instances according to your specification. The advantage of Puppet over stored disk images is that when you make a change, you don't need to create a whole new image and reboot all your instances - Puppet is smart enough to make only the changes required to match the new specification. It can do this automatically across all your servers, as often as you wish - the default is to update every half an hour.
I've written a short tutorial on Puppet: enough to help you get it installed and running, and feel confident about writing your first bit of Puppet configuration. Read the tutorial here:
Puppet Tutorial from Bitfield Consulting