This is probably the biggest one. Some of us get this one right at least, but far too many of us are still doing all our work in the trunk. You need a production branch for the simple reason that you are fallible and some of those dorks you have to work with are even more fallible. It is just a matter of time before some bug sneaks onto the live site. When it does you'll need to fix it ASAP and you'll need to know that your patch doesn't introduce some new bugs from that code you were working on. If you've got a production branch you can know with certainty exactly what's on the server right now and you'll have a pristine starting point from which to start tracking down and killing that bug.
The only time this branch doesn't reflect exactly what's on your live site is in the short time between when you add new code to it and when you deploy it to the live site. Everything that gets deployed to the live site from here gets a sensible tag that you don't have to look up in some document when you need it.
K. Rhodes 2007-05-18