Both VB.NET & C# are compiled to MSIL (Microsoft Intermediate Language) not native code and this to complete the full compilation to native (machine) on the end user machine via the exist .NET frame work which is on the end user machine so if it was .NET for operating system x your program should work fine for operating system x and if it was operating system y your application should work fine with OS y, and this is the solution which .NET technology comes with to let the .NET applications operating system in-Dependant.
also there is a COM Marshaler service to support old component (controls) to work with .NET applications so for example you can invoke vb6 control (*.ocx) in C# windows application.
and this is great integration between Microsoft technologies and techniques.
and no need to have developer good in both VB.NET and C#, but any way if you need one, I am here :)
but the question is why I am in both?
this just because I deliver training, So I thought to expand my abilities and I was surprised that they both very near except the syntax.