Hi Adeeb,
First up, this doesn’t really fit in a “Technical Support” forum so the moderators may move it. Furthermore, the lack of documentation is in a similar bucket in that there are so many *processes* one could choose in your situation, it’s going to be hard for EllisLab to document them all. All said, it’s a good question and you’ll definitely find a lot of talk around the dev/live problem.
For the client, its good practice to set up a Member Group for the site editors and selectively restrict access for that group, allowing them to see the Content menu and only other menus where required so they can’t change Admin setting or Design for example. It is possible to restrict Statuses by Member Groups too, so you could stop the editors from setting a status to Open until after your review. There is a lot to be said for training, and after all its the client’s site and a content management system should empower them and help keep them safe, right?
The dev/live is really a separate issue, in that maintaining versions of the site to manage content isn’t a best practice but is definitely encouraged for development. If you’re a lone soldier, setting up a local version of the site is a good bet: install EE locally, copy in your templates, make copies of your production database periodically and import into the local environment (it doesn’t matter if the content is a day or two out of date in development, right?). Then you can push the updated templates onto the server. Creating a dynamic config.php file is all the rage at the moment: http://eeinsider.com/articles/multi-server-setup-for-ee-2/