The staging area is a place that should mimic the production environment as closely as possible. Although this is sometimes hard to achieve, the more closely you can mimic the production environment, the better it will be. You will be able to see how your code reacts in a protected area, but one that simulates the real production environment at the same time. The staging environment can often be a place where the end user or client can test out new features or functionality, giving feedback and stress testing code without fear of affecting production code.
As testing and experimentation progress, your staging area (at least from a data perspective) will eventually distance itself from the production environment. So it is a good practice to have procedures in place that will replace the staging area with production information from time to time. The set times will be different for each company or development shop depending on features being created, release cycles, etc.
If resources permit, you should consider having two separate staging areas: one for developers (coding peers) and the other for client testing. Feedback from these two types of users is quite often very different and very telling. Server error reporting and feedback should be kept to a minimum here as well, to enable production duplication as closely as possible.