The difference in which database to run your staging server against is a matter of what degree of changing of the data you will want/need to do during the staging tests. For many sites that have lots of content that you want to see how the display changes you are making will look it makes sense to run the staging server off the production database - but then you need to be careful about altering the data since it will change your "real" copy. The project I work on is all about changing data and making sure that those changes are displayed properly throughout the various views of that data (different customers, customer service, and site admin views) so we want to be able to really mess with the data durint testing. So my staging server runs off my developement database.