How rotation works :
When rsnapshot hourly is called, a new backup will be created from the file system, and saved in <snapshot_root>/hourly.0/. The rest of the retained backups will continue to get incremented each time the command is run. So eventually, what was <snapshot_root>/hourly.0, will become <snapshot_root>/hourly.23/. Then the next time the command is run, this will be deleted.
When rsnapshot daily is called, it will create <snapshot_root>/daily.0/ from the <snapshot_root>/hourly.23/ backup if it exists. Otherwise, rotation works the same way.
Likewise, when rsnapshot weekly is called, it will create <snapshot_root>/weekly.0/ from the <snapshot_root>/daily.6/ backup if it exists. The pattern follows the same for each additional retain level that is configured.