C# language still has uses outside of .NET
""Mono & .NET are platform abstraction layers. This allows code to run on all platforms in this framework."""
C# and Mono's .NET are like C++ and Winelib.
Using those languages and that environment you can produce software in Linux that will run natively on both Linux AND Windows.
"""Is it just me or is this useless? This will be like saying that if you use Java the language and the compiler you are ok, but use the APIs and we'll get you later.""""
It's like saying you can use C++ and write your own compiler your 'ok', but if you try to emulate Win32 through Wine you are not.
"""The most useful part is the APIs which are not covered by this pledge."""
Well .NET is a huge sprawling monster. Mono can never hope to keep up with the Microsoft in this case. So therefore it's only going to be able to support the popular parts of .NET, which will require some porting effort for the majority of .NET applications. However once your done then it's cross platform.
So the .NET stuff in Mono is of limited usefulness unless you really like to program in ASP.NET instead of Ruby or PHP.
However C# and the CLI are still useful without .NET and in Linux you can use Gnome environment and the C# language to produce software. That way your using C#, but without the .NET APIs. It's like using C++ in KDE without using Win32 APIs.... It's perfectly possible.
Using C# and CLI that allows a intermediate level programming language to be useful in the Linux desktop. With Gnome desktop the primary programming languages are C, C#, and Python. There are lots of bindings with different languages, but those three languages are the most popular, best supported, and you can depend on them being present on a 'full' gnome installation.
And if your interested in supporting multiple platforms then GTK and most of Gnome is cross platform so you can write your apps once and get support in Windows and OS X.
So ultimately the usefulness of the Microsoft 'promise' is going to be limited to how much you like C# and prefer to use that language over C or Python.
In other words... C# is a programming language, it's just a formal way of describing programs in text like any other language. Just the same as C or Ruby or whatever. The CLI is the 'compiler' for the language, more or less. Making it possible to take the intermediate bytecode created by interpreting the C# language and then executing it with all the JIT goodness and whatever else.
So Microsoft is essentially saying "It's ok to use C# and write a proper interpreter, but don't think we are going to let you get away with duplicating Windows" (duplicating Windows is essentially what you'd end up having to do if you want to do all of .NET anyways)