That's the exact principle I'm talking about- meta-circular implementations shrink the amount of unsafe code and confine it to specific places where it can be better tested and checked.
Rust's unsafe-with-safe-interfaces style is just another way to do that, which honestly is a lot more straightforward.
No, because there are(will be in Go's case) meta-circular implementations available.
C and C++ aren't the only way to implement compilers.