There are two types of compiler passes: multi-pass compilers perform multiple traversals of the source code to perform different stages of compilation like scanning, parsing, semantic analysis, etc. One-pass compilers only traverse the source code once, performing all compilation stages on each line before moving to the next.
Bootstrapping is the process of using a compiler written in a language to compile itself, allowing the creation of a self-hosting compiler for that language. It involves first creating a simple bootstrap compiler for a language subset, then using that to compile a full compiler for the language which can then compile future versions.