「IL」とは「Intermediate Language」つまり中間言語のことです。.Netや、Javaではソースコードをコンパイルして中間言語化します(Javaではバイトコードと呼ばれています)。そして実行時にネイティブコードへのコンパイルを行います。これには様々な利点や問題点がありますがここでは割愛します。
「CIL」は「Common Intermediate Language」あえて日本語に訳すと「共通中間言語」になる。ILコードの1つ。汎用フォーマットです。
「MSIL」とは「Microsoft Intermediate Language」の事です。MSILもILコードの1つで拡張フォーマットです。MSILはCILに準拠しています。.NetのコンパイラではMSILのコードを作り出すそうです。
実行時にはMSILからネイティブコードに変換されて実行されます。というわけでMSILの実行環境があればプロセッサなどを気にすることなくコードがかけるかもしれません。
標準の拡張子は「*.il」らしいです。
特徴・仕組みについては後で話そうと思いますが、軽く触れると
私もまだ勉強中なのでよく分からなかったりします。JAVAのバイトコードに似ているらしいです。