As far as I know SeDebug is only needed when the target process is owned by another account which has a higher "security level" (I don't know the proper word for it) than yours, or if it has set a more restrictive ACL than windows supplies by default. Which wow used to do btw, but doesn't anymore. Maybe that's what you were referring to?
I always assume potential malware when I see a wow hack or bot requiring to be run as administrator. There's no need for them to have access to my entire system just for wow.
Maybe for a general purpose application, like an in-game overlay or something, SeDebug might be needed. But even then, in most cases not.
Agreed on specific flags though. I seem to remember someone, probably you, saying that the value and/or size of PROCESS_ALL_ACCESS had changed between windows versions.
Currently that's not an issue because Module32First checks if the handle is valid before attempting to use it. But I doubt the OP knew that, so we'll blame it on sloppy coding

Also this might change in future API versions, so yes; Always check return values.