O que acontece quando o .NET 4.0 faz referência a um assembly do .NET 2.0?

O que exatamente o tempo de execução do .NET 4.0 faz se um executável do .NET 4.0 contiver uma referência a um assembly do .NET 2.0?

O assembly .NET 2.0 é executado com o tempo de execução do .NET 4.0 (em outras palavras, o .NET 4.0 deve ser 100% compatível com a API do .NET 2.0) ou o processo de alguma forma hospeda o tempo de execução do .NET 2.0 e acontece alguma mágica os tipos do .NET 2.0 acessíveis de maneira transparente ao meu código baseado no .NET 4.0?