1. Is it possible to use C# outside Windows OS? The answer is probably yes, but how hard is to do it? How can we do it?
2. Is it possible to create dynamic and flexible forms with C# (like in Java using the different kinds of layout managers)? If not, this is really a bad thing.
3. What are the most C# uses nowadays? For example, what can we do for web programming?
4. Where C++ is really better (more efficient) than C#?
1) mono as grey wolf said
2) not sure
3) probably in microsoft apps and the windows phone store
4) c++ isnt neccesarily better. its a case by case issue involving things like:
-coding experience in the aforementioned languages
-how well each compiler is written
-how well you write each program
That is going to always be a problem with other platforms implementation of CLI, they will always be a few steps behind or not have the interest to implement sort of the parts.
Gtk# works on every platform that Mono supports, and it emulates the native look-and-feel so P/Invoke would probably not be necessary (it's slow so you should avoid it where possible).