As far as 1) is concerned, mIRC has the /autojoin command, which can be used to delay the joining (literally waits X secs before sending /join)
2) Would be implemented with /autojoin, possibly a new switch.
mIRC will not try to join the channel first, it will first send /msg, the server is simply answering your /join command before Nickserv is.
The way to identifity to nickserv or another service never has been a standard, which is why mIRC never had any of those built-in, but a better built-in way to set up multiple connections to different network with different channels always has been asked, perhaps it could include an option to only join channel once you got a certain answer, you would select for example "[✓]use notice" with two editboxes, one to specify a nickname (possibly a list of nicknames) which would be nickserv in this case, and a second editbox "matchtext" where you would put the matchtext to trigger on (you can change nickserv's language so it may not be always english message), something like *IDENTIFY*.
In the meantime with /autojoin -d3, you should be fine to get identified before joining.