I think it is mostly a question of which parts of compilation you want to learn. Babel is a pipeline for source-to-source code transformation, which means it is suited well for cases like compilation of ES* features. Most low-level compiler toolchains are going to do a lot more than that because they are converting from source code into a lower-level representation, whether that's LLVM's IR or bytecode or assembly. For a small overview of Babel you might consider looking at github.com/thejameskyle/the-super-tiny-compiler