Hola,
Aclarando tus preguntas, tanto Java como C# son lenguajes derivados de C y C++, por eso la sintaxis es parecida, no es que C# sea una mezcla. Segundo C# fue concebido al igual que Java como lenguaje de programacion a compilarse en un lenguaje intermedio, esto para hacerlo independiente al sistema operativo.
Al igual que un programa de Java, puede ejecutarse de manera independiente en Windows, Linux o MacOS, en teoria un programa de C# podria ejecutarse de igual forma en cualquier plataforma, no cambiando el programa pero si el entorno de ejecucion, lo que en Java se llama JRE y para C# se llama .Net Framework.
Ahora por problemas de licencias y legales, oficialmente Microsoft solo hace y da soporte al entorno de ejecucion de Windows llamado .Net Framework, pero hace unos años, un equipo independiente crea un entorno de ejecucion para Linux y MacOS que se llamo Proyecto MONO. No fue otra cosa que un runtime para .Net. El problema es que al no ser un desarrollo reconocido y avalado por Microsoft no tiene soporte oficial y hay diferencias entre la implementacion del framework de .net y mono. Por eso no es posible ejecutar un programa hecho para el Framework oficial en Mono y viceversa.
Hace relativamente poco Microsoft se une al proyecto Mono y a la empresa Xamarin y en la ultima version de visual studio ya permite compilar de manera nativa proyectos para cualquier plataforma (Linux,Mac,Windows y Android) empleando el mismo codigo fuente de C#.
El GTK+ y GTK# son muy parecidos en implementacion y performance. Pero XNA solo tiene soporte para Windows y XBOX, pero existe una implementacion para MONO llamada MonoGame que ofrece soporte para cualquier plataforma que soporte MONO incluyendo XBOX.