Thanks for your bug report. For the first issue:
Handling the initial CAP command is a little bit tricky because there are four or five ways that different ircds reply to it. For those that support CAP, it is straight-forward. For those that don't, they either do not react at all or they send error messages (either 421 or 451) in different formats. Some error messages contain the command that was used, in which case you can tell whether it was due to CAP, while others do not, in which case all mIRC can do is hide the first error message it sees, assuming that it was due to the CAP command.
I can change the generic method that mIRC uses with Quakenet-type ircds to: if mIRC sends CAP and the ircd does not not support it and the ircd does not send an error message, mIRC waits until after the end of the MOTD and if no error messages have been received, assume that the server will not be sending one and clear the CAP error message check.
For the second issue:
mIRC should probably show the results of CAP on connect as well. I have added this to my to-do list.