How setTimeout in Javascript works at the low level? Is there exist some hardware alarm clock? Or interpreter (through system) just asks periodically what time is now?
All that's specified is the language-level effects. There's no requirement that it work a specific way at a low level. Doing so would require some intrusive policy on what functions have to exist in your language of choice before you could create a Javascript interpreter.
Generally, most OSes do have a system timer that ticks X times a second, and an interpreter will either set up a timer to fire an event or send a signal after so many ticks, or run a separate thread that sleeps til it's time to process a timeout. At that time, the interpreter will set things up so that the event handler is the next thing to run. But you should not rely on any particular behavior, as it is an implementation detail (and could fail spectacularly if you're not running your code in a browser you developed for).