shutdown are pseudo-users for system reboot and shutdown, respectively. That's mechanism for logging that information, with kernel versions to same place, without creating any special formats to wtmp binary file.
The wtmp file records all logins and logouts. Its format is exactly like utmp except that a null username indicates a logout on the associated terminal. Furthermore, the terminal name ~ with username shutdown or reboot indicates a system shutdown or reboot and the pair of terminal names |/} logs the old/new system time when date(1) changes it.
wtmp binary file do not save other than timestamp for events. For example
last calculates additional things, such as login times.
reboot system boot 2.6.32-28-generi Mon Feb 21 17:02 - 18:09 (01:07)
user pts/0 :0.0 Sat Feb 12 18:52 - 18:52 (00:00)
user tty7 :0 Sat Feb 12 18:52 - 20:53 (02:01)
reboot system boot 2.6.32-28-generi Sat Feb 12 08:31 - 18:09 (9+09:37)
Last column (in parenthesis) is length of event. For user
reboot it's uptime.
After latest reboot, time is current uptime. For earlier reboots, time is uptime after that reboot (so in last line of my example it's uptime until first line; there was no reboots in between). Number(s) before + means number of days. In last line it's 9 days, 9 hours and 37 minutes, and in first line current uptime is 1 hour and 7 minutes.
Note however that this time is not always accurate, for example after system crash and unusual restart sequence.
last calculates it as time between it and next reboot/shutdown.