1. AFAICS, there is no real reason for STRICT to be a reserved rather than unreserved PL/pgSQL keyword, and for that matter not EXECUTE either. Making them unreserved does allow some ambiguity, but I don't think there's any surprises in how that ambiguity would be resolved; and certainly we've preferred ambiguity over introducing new reserved keywords in PL/pgSQL before. I think these two just escaped that treatment by dint of being ancient.
I checked other reserved keywords and I didn't see any reason to be reserved keywords
for K_TO, K_NOT.
K_FOREACH, and K_WHILE are reserved probably because are used after opt_loop_label - but it is not necessary
Other keywords are used as some delimiter or as protection against parser's conflicts.