C# can be used on Windows, Linux and Mac OS X, so don't listen to people who say it's only for Windows, they're wrong:
http://mono-project.com/Main_Page
C# is almost always going to be slower than the other two, but it also has lots of high-level features missing from C++ and especially C, as well as a much more complete standard library. If the standard library doesn't do something, you can usually find a C# library for it, and if not, it takes all of five minutes to create a wrapper class for a C or C++ library. C# is a lot better suited to applications that need to be developed quickly and big projects where organisation is important (I find organising code easier in C#) but where performance is less of a concern.
That's not to say you can't write high-performance software in C#. The Sims 3, for example, is partly written in C#. The way to do it is to write all the performance-intensive functions (particularly rendering code) in C and use something called P/Invoke to call the native code from within C#. That does have some overhead (The Sims 3 doesn't perform as well as it probably would had it been written in C++), but unless you're rendering 3D graphics or doing a lot of maths, you probably won't notice it. I'd also like to mention that IMO algorithm choice and implementation is far more important than the language. Pick the wrong algorithm or implement it badly (or worse, both), and it will be slow in any language. Another thing I think is worth mentioning is that a programmer who knows his language inside out will certainly produce faster code than one who doesn't, regardless of the languages. A lot of it is common sense, like not using a sorted list in C# if you don't need it to be sorted, or not type-casting the same object twice, but sometimes it's more subtle, like whether to use structs or classes (in C++ it doesn't matter (they're the same) and in C you don't have a choice (there are no classes), but in C# struct and class are subtly different. That's the kind of thing that can make the difference between fast and slow code. As a final word on performance, while native code usually executes faster by virtue of being native code, the C# runtime compiler (C# is compiled to an "intermediate language" which is then re-compiled into native code when the program is run so that you can use the same executable on different platforms) has a lot more information about the platform, so it can make much better optimisations than a C or C++ compiler can, because they don't have the advantage of knowing what platform they're running on.
To summarise:
- C# is not Windows-only.
- C# has a more complete standard library and you can use practically any C library in C# (like I said, though, there is a bit of overhead).
- C# is a bigger language, but IMO it's better designed than C++, and it has a lot of useful features that C++ and C don't have, as well as cleaner syntax.
- Algorithm choice and implementation is going to have a more profound effect on performance than which language you choose.
As for your question, my advice is to learn all three.