Correct. Keyboard Maestro cannot run while the Mac is off or sleeping (usually when its sleeping, but “sleep” in macOS is a very complex topic).
Yes.
Have the macro triggered using the Periodic trigger in the range of time you want it to possibly run. When it runs, note the date (perhaps use the ICUDateTime token or the DAY function, there are various ways.
If the date is different to the last time it was run, then remember that new date in a variable and run the macro.
Convention is to use a variable name that starts with DND_ (eg DND_Whatever Macro Run Date). DND stands for Do Not Delete.
Keyboard Maestro global variables are permanently stored.
At first, I thought I would not be able to make such a macro by myself. But I tried and ended up making this. Is this something that you were suggesting? Would this macro work flawlessly?
You can do something like that, but I would generally prefer to use numbers that are available to calculations rather than text – i.e. %LongDate% – which is not an actual date but a piece of text.
This is probably the least complicated approach I'd take:
Yes, that looks fine. The Break From Loop and Cancel This Macro actions are not necessary unless you plan to put other actions after the If action.
@ccstone’s concern about using %LongDate% are probably unfounded, the only issue would occur if say the date format changed for some reason (for example, you change the date format in your System Preferences), then the macro would run a second time. If running the macro a second time would be catastrophic, then that would be an issue to take seriously. Otherwise, it's such an unlikely occurrence that it could probably be ignored.
But for safety, instead of %LongDate% you can just use %ICUDateTime%yyyy-MM-dd% in both locations.