Because there is a common language to which all .NET compilers ultimately resolve, is it possible to have .NET languages other than what Microsoft provides or even to write code in MSIL directly?
Actually, there are several other .NET compilers being developed and released. COBOL, FORTRAN, and even Java compilers have been released (or will be released soon) that produce .NET applications. It is possible for anyone to create his or her own language and compiler as long as it produces the MSIL code to the correct standards. It is also possible to write .NET applications directly in MSIL if you're inclined to do so.
In the past, generally Visual C++ has been better at performance than other languages, such as Visual Basic. Is there a performance difference with using one .NET language over another?
The performance of all .NET languages is exactly the same because they all resolve to the same machine code. It is possible that a .NET language compiler produces poor MSIL code; however, in theory, the languages should be all the same. Therefore, there is no advantage in writing managed code in one language over another. However, Visual C++ is the only language that has the ability to mix managed and unmanaged code within the same application, which gives it an advantage over the other languages.