A linguagem de programação é este conjunto de regras. É o que define a sintaxe e semântica a ser obedecida. Assim como toda língua natural, mas neste caso é uma língua mais limitada, mais lógica e com um propósito específico.
Existem tantas porque cada uma possui um ponto forte, além de atender melhor um tipo de problema específico, atende gostos de pessoas diferentes. Há casos que não é bem a linguagem em si que a torna viável para um problema mas sim a infraestrutura que foi montada em torno dela.
Este conjunto de regras é definido por uma gramática e provavelmente uma especificação formal, ainda que alguns casos mais específicos a implementação do compilador é que define como a linguagem se comporta. Em geral isto ocorre em linguagens não padronizadas e que só possuem apenas um compilador para ela.
É comum os compiladores não seguirem a especificação 100%, em geral por falha, ou mais ainda, por adicionar capacidades que a especificação não determina. Evidentemente isto é a exceção, caso contrário começaria se transformar em outra linguagem.
Você usa o IDE para facilitar o trabalho de desenvolvimento, mas ele é apenas um facilitador e não pode ser confundido com a linguagem de programação. Qualquer problema que você está tendo com o código que está escrevendo é um problema com a linguagem e não com o IDE. Fazendo uma comparação com outras línguas, se você não sabe como escreve uma palavra em português ou como construir uma frase não pode dizer que isto é uma dificuldade que está tendo com o Word, é uma dificuldade com o português.
Um problema com o IDE ocorre durante o processo geral de desenvolvimento, quando algo falha ou a dificuldade encontrada é no IDE você tem um problema nele. Comparando novamente, quando você não está conseguindo fazer um parágrafo no Word, é uma dificuldade com o Word.
Quando alguma das ferramentas usadas falham ou você encontra dificuldade isoladamente você tem um problema nela especificamente. Isso pode ser até o compilador, mas raramente um problema é do compilador em si.
A maior parte das falhas ou dificuldades que a pessoa encontra durante o processo é durante o processo de compilação, mas porque o código tem algum problema, não porque o IDE ou o compilador não estão funcionando. Então o problema é com a linguagem de programação.
E não, o bug não está no IDE ou no compilador. O bug está no seu código escrito. É mais fácil acertar na loteria do que uma pessoa iniciante em programação achar um bug, principalmente no compilador, impedindo o uso correto da linguagem.
Um IDE pode usar compiladores diferentes, não só para linguagens diferentes, mas também para a mesma linguagem. A linguagem é única (ainda que possa ter dialetos), os compiladores não, e IDE menos ainda. O fato da maioria das pessoas usarem um determinado IDE para uma linguagem não o torna como parte da linguagem.
Um IDE é totalmente desnecessário para usar uma linguagem de programação (bem, pode existir alguma linguagem esotérica que exija). O compilador é absolutamente necessário, ainda que em alguns casos ele seja mais um interpretador.
Compiladores como o GCC suportam linguagens como C, C++, Objective C, Fortran, Java (é muito raro alguém usá-lo para ela) e outras. Note que o GCC é apenas um dos compiladores existentes para as linguagens C e C++. Ele funciona em todas plataformas mainstream e várias outras. Entenda por plataforma, a arquitetura do processador ou sistema operacional. Em algumas pode exigir uma distribuição diferenciada, como é o caso do Windows. Neste sistema operacional costuma-se usar o MinGW, mas no fundo o compilador é o GCC. Há quem use também a distribuição Cygwin, mas á raro.
As linguagens C e C++ são padronizadas e possuem diversos compiladores que atendem suas especificações. Entre eles o Clang, Visual C++ (Note que ele não chama Visual Studio C++ que seria o IDE para esta linguagem, apesar do nome, o compilador funciona em linha de comando e não tem nada de visual, esta parte fica no IDE) e Intel C++ Compiler, só para citar os mais conhecidos e ativos.
Code::Blocks é um dos IDEs "independentes" mais usados. Quem usa a biblioteca Qt costuma usar o Qt Creator. Há quem goste do CodeLite, C++Builder, ou XCode. CLion começa ter adeptos.
Estas são linguagens onde há abundância de IDEs e todos importantes os que permitem o uso de várias linguagens oferecem algum nível de suporte a elas, em algum nível. Infelizmente há alguns bem ruins indicados em cursos (Dev C++, cof cof).