I've been using HA a little longer than yourself and took the exact same steps a few years ago. It's good to see we ended up at the same "conclusion".
I decided to buy dedicated hardware for HA as opposed to the VM approach as I wanted it to be completely independent from my home servers running non-critical tasks. I bought a Minisforum mini-PC with far-far overkill performance, RAM and storage for HA, but that's just how I roll.
With well over 100 devices, I switched to MariaDB and Influx too, I also solved the heating a couple of years ago, here's a quick summary:
I have a BLE temperature sensor in every room of the house (Switchbot Meter Plus), and I have a Z-Wave TRV on each radiator, I grouped the values into upstairs and downstairs for day/night with some exceptions for home offices, and calculate a sort of "average" temperature.
With some scripts to create a hysteresis, I turn the overall heating on/off when the "average" temperature is below set temperature - 0.2C or above set temperature + 0.3C, each room has an individual set temperature and I turn off the TRV if that room goes above the set temperature and back on if it drops below, again with some light hysteresis.
I then have some automations to switch to day/night/away modes with different set temperatures and rooms on/off depending on the situation.
As for lighting, I use "Circadian Lighting" which _does_ allow light groups, so I just specify the groups in yaml and it takes care of the group as a whole. I think it's probably lacking some functionality of the Adaptive Lighting plugin, but I haven't had to worry about differences in bulb types, I have a mix of Hue (80% of my bulbs) and IKEA (white only and colour).