1. MSIL code is Microsoft Intermediate Language of which the JIT compiler converts it on the fly to binary (machine language), this enables any operating system with the equivalent .net framework to run any .net application (IE you run your .net windows application on macintosh and linux; for Linux the framework is called Mono)
yes .net dll's and .net exe's are compiled in MSIL
2. what's native code? do you mean 'native code' as in 'source code'?
3. it's .exe because users of Linux, Mac, and Windows know what exe's are and this allows even the average person to know how to manually start .net applications (though when distributing your applications you should place shortcut's with icons on their desktop and startmenu's)
but .net applications are compiled to MSIL code with the approprate extension's (.dll and .exe) it's the JIT compiler that converts it to binary when you run the program(s) ... (hence the slight delay in displaying the main form when loading the application)
4. .net exe's and dll's are compiled to MSIL code, exe's are meant to be ran directly, dll's are libraries containing controls, functions, methods but can't be ran by themselves, exe's reference the dll's
dll's allow you to re-use large amount's of code without having to copy&paste it into every project and re-compile the same stuff, but using dll's it's already compiled to MSIL and all ya do is call the stuff ya need without re-writing the code over and over again
5. when you run your .net application (even when debugging) the IDE compiles the project to MSIL code then run's the output exe file in which the JIT compiler in the framework does it's thing
-------------------------------------
it's good to ask questions especially when you're contemplating a major change
luckily you can run vb6 and vb.net side by side on the same system with no troubles so you can use both while migrating to .net