I've mentioned before that one of my ownership areas at MS is the CLR "shim". Most people I've said that to ask me, "What's that?". I usually reply that generally, it's mscoree.dll, to which they typically respond, "Oh yeah. What does that do?" In general terms, the shim is in charge of firing up the runtime in a process. In addition, it exposes all the hosting APIs and other stuff you need to do stuff with the CLR from unmanaged code. If you look at a managed app, you will see that it has a dependency on mscoree.dll, and nothing else CLR-related. Ater the runtime is spun up, most of the things that mscoree exposes are simply forwarded calls into the mscorwks.dll of the runtime you have installed.
What's interesting about mscoree.dll, is that it is the only piece of the runtime that doesn't run side by side. You can have v1.1 and v2.0 installed on the machine, but you will only have one mscoree.dll. You always have the version of mscoree.dll that corresponds to the latest version of the runtime installed on your machine (unless you have installed a patch or something that services mscoree, in which case you may have a v2.0 shim even though only v1.1 is installed on your machine).
So, naturally, backwards compatibility is extremely important in the Shim. When you start up managed code, the Shim decides which version of the CLR to fire up based on lots of different things. These things are all fairly well documented and all have a specific scenario they enable, but by their nature they are very confusing.
Aside: When I was job hunting, I interviewed at several companies other than Microsoft. During some of those other interviews, I was asked questions about what runtime would be started under certain conditions. The rules are so confusing, that some of the interviewers, although all extremely smart people, had formed incorrect models of what the rules were. Some told me I had the wrong answer to their question, when if fact it was correct. (that's not to say that I knew the correct answers to all of them.)
I'm not certain that I can clear up the confusion, but I do hope to have a series of posts in the coming months on why the shim does what it does under certain circumstances. Then, at least you might understand what's going on when it happens.