Mira, básicamente en mi experiencia(que es con .NET 1.*), la mejor manera es hacer tus cambios, si son en código compilar y sincronizar, pues básicamente el code behind no son más que dlls dentro de tu sitio cierto?
Con respecto a las dlls, no es necesario reiniciar el servidor, se supone que el framework hace ese trabajo por ti, el problema muchas veces resulta en que tienes que borrar los archivos temporales del .NET, para esto tendrás que suspender temporalmente el servicio de www, pero solo es unos segundos.
Pues no se si esto contesta a todas tus preguntas pero es lo que en mi limitada experiencia te puedo comentar, ánimo y que todo salga bien con .NET, por cierto, ya viste que el Server.Transfer ahora recibe argumentos?
Bueno, vamos a ponernos a aprender más para poder debatir a gusto por aquél foro!
Saludos