- What is the deal with how Linux deals with the BIOS clock?
Consistently. Even if Windows does it, it makes no sense to set the RTC (that's what you mean when you say "BIOS clock") to local time. Otherwise, you'd need to know whether a daylight savings switch, leap second, or travel to another timezone happened while a computer was off. Which is logically impossible to do, if you don't tell every operating system you run to write the shutdown time to a special place on disk and every operating system to first check that place to check whether something should have happened to the RTC while the computer was off. (and that place does not exist, so, this is impossible.)
Correct automatic bootpower-on schedule setting before a DST transition wouldn't be logically possible at all, because you can't know whether you'll boot before, and so on. RTC in local time is just a really bad idea.
So, Linux is not the strange thing here. By default, the Linux kernel and the userland assumes RTCs to be universal time.
- Am I expected to use hwclock <--systohc | --hctosys> ?
No.
- What's the proper convention regarding what the BIOS clock is set to, UTC or local?
UTC.
I seem to experience two different behaviors of Linux where it assumes on a Dell {enterprise style} server that the BIOS clock is UTC but on my cheap home asrock it is set to local time; And playing at home setting my asrock bios clock to UTC causes way more problems.
Cannot confirm that, and it's not how this generally works. You can tell your system to interpret your RTC as being in local time, or in universal time; check man timedatectl, section set-local-rtc. It specifically warns you about the idea to keep the RTC in local time. It's not supported, and it brings a host of problems.
Does it always reference the BIOS clock upon boot,
Where but the RTC would an operating system on an offline computer take the time from at boot, if not the RTC? yes.
and where is it specified in Linux for what timezone it should assume the BIOS clock to be in?
Linux (the kernel) itself assumes UTC.
As mentioned above, you can "kind of try to trick the software system" into correcting that assumption if you really want to set your RTC to a different time zone. But that just lets Linux boot, set an incorrect system time under the assumption that RTC is in UTC, then a service is started, says, "nonono, you need to adjust the system clock by X hours, we're doing this strange thing with RTC in local time", and adjusts the system clock.
The default local time zone is stored as symlink, readlink /etc/localtime.