Why `0 * * * *` and not `* * * * *`?
The minute field is what determines the cadence here. Wildcarding the minute (* * * * *) gives you every minute — 60 firings per hour. Pinning the minute to 0 gives you exactly one firing per hour, at xx:00.
The hour wildcard * says “every hour”. Combined with minute 0, the full schedule is “every hour, at minute 0”.