Rules: Add "between time"

It can if you set it up this way. @aaiyar suggested one way above. Create a rule triggered on system start, use conditional actions based on time (or whatever other criteria you may need; that is all you've mentioned so far), and perform whatever actions inside those blocks that you want.

You can supplement this with a rule or other app "triggered" at a specific time that does what you want at that time. These are different automations, at least with any built-in app you'll find. (It wouldn't be impossible for someone to write an app that does both in one -- this reminds me of a new-ish option you can use in Mode Manager that checks time on startup and sets the mode based on your settings table; but nothing like this exists that I am aware of for lights/switches/etc. But it's also simple to do yourself.)

Not for most devices it doesn't (the hub itself, yes, as above). Zigbee, Z-Wave, and Matter devices -- and likely other kinds of devices you may use -- do not maintain some always-on connection with the hub that can simply be checked to see if it "dropped." For the most part, they just transmit messages when needed and, in the case of mains-powered devices, are generally listening to receive them. Battery devices get even more complicated. The best you can do is guess (or try to "ping" a device if it's the kind that will respond and see it does). Some community drivers attempt this for certain devices; otherwise, apps like my Device Activity Check can give you a best-guess based on metadata and your own knowledge of how the device normally works, among other options.