While I don’t know about #2 (been wondering it myself), you’re correct that you can inline macros into the case block. It might be a “best practices” or coding style kind of thing.
I believe it is now, but that’s a fairly recent change. (By which I mean that anyone using firmware that’s not up-to-date would need the conditional to keep the macro from executing regardless of the keyswitch state).
No, it also fires when the key is released. It also fires every cycle while the key is held. It also used to fire when the key was idle, which had its uses, but we removed that feature, because it made the main loop a lot faster. Always fast > marginally useful use-case.
So with an up-to-date Kaleidoscope, macros fire when the key toggles on, while it is pressed, and when it is toggled off. This is by design, and is useful, I don’t see it changing anytime soon. If you’re curious about why it is useful, let me know, and I’ll present some examples