A morning job was saved as 0 9 * * 1-5. On Vixie cron and cronie that is 09:00 Monday through Friday. Monday is 1 and Friday is 5, so the range 1-5 is those five days. The day-of-month field is a star, which means every day of the month, so the weekday field is the only limit on the day. The either-day rule starts only when both day fields are restricted. The four lines below are that same five-field form.

0 * * * * # every hour, at minute 0 0 0 * * * # every day at 00:00 0 9 * * * # every day at 09:00 0 9 * * 1-5 # Monday through Friday at 09:00 

What each line fires

0 * * * * fires 24 times a day, at the top of each hour. 0 0 * * * fires once, at midnight. 0 9 * * * is every day at 09:00, Saturday and Sunday included. 0 9 * * 1-5 keeps that minute and that hour, and leaves Saturday and Sunday out.

09:00 is the daemon's clock. The fields are read in that timezone, so the hour is not necessarily UTC. Vixie cron documents a CRON_TZ setting for one crontab. Whether the package on the host honors it is a question for that host's crontab(5).

Sunday, and the sentence the generator writes

On Vixie cron and cronie, Sunday is 0 and also 7. Some other schedulers accept only 0 for Sunday. Read crontab(5) on the host before you use 7. The cron expression generator writes numbers. For 0 9 * * 1-5 its sentence is "at minute 0, at hour 9, on weekday 1-5". It does not spell out Monday through Friday, and it does not install the job.

0 9 * * 5 is a different line. The generator reads that single 5 as Friday: "at minute 0, at hour 9, on Friday". The range 1-5 is the five weekdays. A lone 5 is Friday only.

One tip

A day field that starts with *, including */2, is unrestricted. The page for a line such as 0 9 1 * 5, where both day fields are restricted, is https://kepttools.com/guides/cron-both-day-fields

The field table and the rest of the questions are in the guide: https://kepttools.com/guides/cron-every-5-minutes