Именно так.
Первая версия компилятора пишется на чем угодно, последующие - на языке компилятора.
Что тебя при этом удивляет, мне не совсем понятно.
Собссно, компилятор должен взять текстовый файл и превратить его в машинный код. Какой при этом будет использован механизм и на каком языке будет этот текстовый файл - не принципиально совершенно. Если первая версия компилятора позволяет реализовать этот механизм - он реализуется. И дальше уже реализуется другими версиями.