This sounds a lot like the good old MMapV1 storage engine. With WiredTiger, things are a bit different now. It’s well explained in this doc : https://www.mongodb.com/docs/manual/core/wiredtiger/. At least that’s as far as my knowledge goes. Then it’s really low level operations that I don’t know about.
Note that snapshots & checkpoints is also one of the fundamental brick that allow MongoDB to perform multi-document ACID transactions.
What happens when you write to a document is we write to the document and we write a special format of this write to the oplog in memory “simultaneously”. Then, only the oplog is flushed to the journal. This is because the journal is used to replay operations after a crash onto the most recent saved “checkpoint” (what you are calling flush). Only the oplog format is necessary to recreate any writes that happened after the last checkpoint. So the order is really the opposite of what you have - “oplog” → “journal” and then relatively infrequently by comparison “flush” aka checkpoint.