gcc - это коллекция компиляторов.
Из С-образных gcc компилирует чистый С.
g++ это тоже из той же коллекции, но разновидность для С++.
Почитать можно книгу Артура Грифитса "GCC".
По поводу компилятора C#. Это компилятор в промежуточный код, который будет успешно выполняться и в Linux и в Windows и в MacOS без всяких доп. усилий при наличии некоторой программы (условно-называемой NET-средой).
Уже после запуска эта NET-среда быстренько подкомпилирует в нативный код и в темпе бинарного исполняемого файла будет выполнять, что требуется. Задержка будет только при запуске программы, в процессе работы все ОК.