The CLR is the runtime that converts MSIL code to native machine code. It provides services like memory management, security, and exception handling. A CLR host loads the CLR into a process and creates application domains to execute user code. The CTS defines a common type system that facilitates cross-language integration and type safety. The CLS specifies rules for language integration so code written in different .NET languages can interoperate.