That's how I see it, correct me if I am wrong 🙂
1. Almost from scratch, seems like first it was Java, now majority of the codebase in Kotlin
2. Parser is written by hand, Lexer is generated by JFlex (JetBrains use it almost everywhere in their products)
3. Nope, just three different backends compiling AST directly. Kotlin IR is totally different from LLVM IR. Also every platform has different external contributors (Java classes in JVM, C headers in native), so frontend implementation differs in some places as well.