Is it safe to say that the message not exists?
Yes (precisely it means, that server didn't return the message when asked for it by IMAP client).
Why we do not have same behavior when the message not exists on both protocols?
POP3 and IMAP are different.
In IMAP Mail.dll asks for specific UID and gets the response. Null means that the response didn't contain the message.
In POP3 translation from UID to Message Number must be performed on the client side and after that server is asked for specific Message Number.
I think you have a valid point that those two methods should behave the same, however Mail.dll would need to issue additional UIDL command, even when downloading messages by number. As POP3 errors have no codes, it would be almost impossible to implement in a different way.