To be honest I wish I could offer some reading material, but done it for so many years I honestly can't think what the most sensible step would be.
But to answer your question, we have about 500 .Net web apps running at any one time, each have their own indepent directory for IIS to point to, and each have a Virtual Directory to run the .Net stuff on there.
Most require a BIN directory to put the DLL inside for any code-behind calls, although we do have a handful of sites where this isn't necessary as they are only .aspx files and/or all the necessary code is on the page itself (in other words, no code-behind, so no compiled DLL required).
As for testing the database locally, there has been a few occasions (but not many) where the database has been developed locally and the web-app pointed to, say, my machine where the database is held. Once we've gone live with the app, it's a case of just uploading the database to our remote Server, and changing the Connection String in the web.config file from 127.0.0.1 to the server IP Address (and the username and password of course) and it's been a seamless transition.
Yes the web app itself is created locally, when it enters testing stage, it's uploaded to a dedicated machine here in the office (a simple XP machine with IIS running) for staff to test while we carry on with the next project. Doing it this way frees our development PC's from getting a hammering and keeps it out of a live environment.