How do I 1. get multiple developers working on the same wordpress blog or the same code for another type of website 2. be able to preview those changes 3. have control over which and who's changes are implemented 4. and have the ability to undo the changes if they break something?
What you are really asking is "how do i manage a development team?"
You need a source control system (of which there are many, some free, some good).
But just having that is not going to fix your problem - you also need a development process to follow. There are also many development processes (ideologies) out there, some better than others, but none of them should be used in totality (you will end up using bits and pieces from several, you use what fits your needs).
The process dictates what the developers should do. The source control system helps you with how it is done. Using the source control, you can branch and merge code, and dictate what changes make it into a release version of your product.
Once you have the source control system in place, and a process of reviewing and vetting changes made to the code, and an automated build process (if applicable), your end result will be much cleaner - if implemented properly there should be no need to "undo changes if they break something", because that dodgy code would never make it back into the source control system (but you can roll it back within source control if it does).
Edit: note that i have not advocated any particular source control system or development methodology, it is best left to you to decide which suits your needs. For every advocate of a particular system, there will be someone who doesn't like it for some reason, so it will be difficult to get a definitive "this system is the best" type of answer.
Besides utilizing source control, you need to elevate one of them to team leader and hand him this set of goals! ;-)