The CLR is actually the component that transforms MSIL into native machine code. That native machine code then runs in its own process for each application.
And in the .NET world a process is closely related to an appdomain. That's why I think this is a good starting point.