Il significato è esattamente ciò che pensi significhi. Un compilatore è un programma per computer, e come tale è scritto in un linguaggio di programmazione. Qualsiasi compilatore concreto si traduce dalla lingua A alla lingua B, pur essendo stato scritto nel linguaggio C. Se A == C, allora il compilatore è auto-compilante (o self-hosting). Altrimenti, non lo è.
La domanda che potresti chiederti è: come è stato creato il compilatore in primo luogo? La risposta è che i programmi per computer grandi e complessi non vengono creati tutto in una volta. La maggior parte dei compilatori auto-hosting sono stati inizialmente scritti in linguaggi di livello inferiore con un set molto più piccolo di funzionalità supportate e quindi estesi, fino a quando non sono completamente auto-hosting. Questo evita l'ovvio paradosso di come è nato il primo compilatore.