Give each checkpoint a unique tag / name.
Put a trigger box around each checkpoint, such that when the player enters that box, a trigger function runs that updates a “last seen checkpoint” property on the GameMode or maybe even PlayerController. (depends on networking or not, and such.)
When the player dies, play the death animation, then reset hitpoints or whatever, set the player back to regular animation, and place the player at the player start object that has the name that’s stored in the property.