PostgreSQL pg_rewind use cases
You often need pg_rewind because the standby server that got promoted might have been a few transactions behind the broken primary server. This can even happen with synchronous replication.

pg_rewind undoes these few transactions by replacing all affected blocks with blocks from the promoted (source) server. That is also why recovery will start from the last common checkpoint of both servers.