1. Upgrading is generally pretty straight forward. Backup your site, backup your database. Copy a few lines from the original web.config file to the new web.config file. Copy the new package over the old site. Access the site, DNN does the rest. Though for a large site I would recommend doing all that in a test environment first.
2. Currently, if modules and skins are developed properly, modules developed for DNN 3 shoudl run on 4.8.2, though because of the extracted nature of developers all over the world, no everyone will follow standards for development, not all modules/skins will work in all versions of DNN. Most of the modules we release at www.engagemodules.com are compiled against 4.5.1, and run on every version since
3. Not necessarily a staging environment, more of a test environment. Though, in production you can setup a "staging" site that you upgrade, if all goes well turn off the production site and make the staging site production.