Joining the side story about WinRT and .NET here. When .NET came out, it covered a lot things that devs had wanted in the 90s. Managed memory, a common type system etc. Anyone from the VB6 and VC++ days would remember that these types didn't talk nice, String in VB, and you don't know what kind of string to use in C++, CString, char*, CHAR* BString etc.
So many of these things were addressed and a new language came on board. Building web apps wasn't a totally alien experience anymore, objects written in one .NET language could be accessed from another with ease.
.NET however left gaps and I remember reading many suggestions, debates etc. (probably participated in one myself) about all the stuff on platform invoke etc. A common suggestion was that instead of having all this pInvoke stuff, an Object Oriented API would be a welcome addition because you still cannot easily figure out what kind of type to pass when the API wants a pointer.
So this is pretty much what WinRT is. It covers the gaps that were left by .NET and means that we don't have to write as many, if any, pInvoke statements. That's what I think anyway.