For #1, Have you looked at all the messages (especially last ones) when task manager kills the app? I'm not sure what can be done for these scenarios, outside of a process observer that will kill the vsta.exe process created by the aborted application. I will ask the VSTA team for any ideas beyond WM_ENDSESSION and WM_QUERYENDSESSION.
For #2, http://msdn2.microsoft.com/en-us/library/aa983653(VS.71).aspxshows that projects for each language have their own Exstensibility objects. These are available from the DTE and provide you with Add/Remove Reference events: http://msdn2.microsoft.com/en-us/library/aa984593(VS.71).aspx
Regards, Gary