HFS+ was an old, journaling filesystem. The simplification is that it is a filesystem that just writes the changes you ask for directly to disk (e.g., overwriting the content of a file), with the catch that it first writes what it's about to do to the journal. The journal mainly just helps figure out what was going on if you pull the power mid-write so it can minimize the inevitable damage, rather than just leaving you with a completely bricked device.
APFS is a Copy on Write filesystem. The entire disk is organized as a tree starting at the root. Every time you change a file, no matter how little the changes is, you do it by writing a new file, creating a new tree of the whole disk with your new file in it, and finally updating the root pointer to point to the tree. Files are only removed later when they are garbage collected after not having been a part of any tree for a while.
This means that if you pull the power, the filesystem either looks exactly like it did before because the root pointer was not changed or has all your written changes exactly as you described them. The caveat is that Apple chose not to protect against certain types of bitrot.
It also means that you can take snapshots by just saving a reference to a tree, and roll back to or inspect that snapshot later, without having to pay for a copy of the files - creating the snapshot is instantaneous, and the consumed storage is just the sum of unique files in all trees.
This can also be used to have multiple roots (e.g., one for the current OS version, one for the new update being prepared) and subvolumes (e.g., one for the OS, one for the user, one for each app, whatever), again only paying for the sum of unique files.
This may sound expensive over allowing small writes to be done directly, but SSDs can basically only be written in whole 4k blocks, and the SSD controller moves your data around whenever you write to avoid wearing out the same block anyway. As such, there is a lower bound for I/O overhead, and there's a bunch of tricks the OS can pull to make the CoW overhead virtually disappear, like write caches/coalescing.