There appears to be a few sync mechanisms in Substrate like full sync, fork sync, gap sync, warp sync, state sync, etc.
What is the complete picture of sync mechanisms/stages in Substrate are and how they relate to each other?
The original question mixes some high-level sync concepts with implementation details, I'll try to clarify.
From the point of view of a user there are 4 distinct sync modes:
Going back to terms pointed in the original question:
full: Download and validate full blockchain history. - fast: Download blocks and the latest state only. - fast-unsafe: Same as fast, but skip downloading state proofs. - warp: Download the latest state and proof. [default: full] [possible values: full, fast, fast-unsafe, warp]