Checkpointing is saving the progress of a workunit. That principle is mainly needed for long running tasks. If a systemcrash occours or the PC is rebooted, little or even no progress is lost, for computation resumes instead of restarting entirely.
Most projects are using that principle, albeit not all.
In the client-attributes projects are marked to have checkpointing as well, if they only use short workunits. So are projects, that save the progress not while they are running but instead shortly before their workunits are finished - of course that does not help in case of a systemcrash.