Reference: https://www.postgresql.org/docs/current/checksums.html.
The checksums are useful to protect from storage corruption (corruption that happens after the page is written, but before the page is read) or RAM <-> storage transfer.
The checksums don't protect from incorrect use of WAL. They also don't protect from bugs in the code that corrupt data.