If a computer crashes then the filesystem is an inconsistent state. What exactly is fsck(8) doing to restore to a usable filesystem? Is there a backup table? Is it cross-checking metadata?
According to the man page it is able to fix:
Unreferenced inodes Link counts in inodes too large Missing blocks in the free map Blocks in the free map also in files Counts in the super-block wrong
but how can this happen?