Unfortunately I don't have a forum with 2 million posts to check it on.

Why not index the visible column then? Since you have a multi-GB post table, what's an extra few dozen megs gonna hurt?
As for the post count, $thread['replycount'] is not incremented for posts that are placed in the moderation queue. it is only updated when they are taken out of the queue. That's the whole point of the reply count field, if there were more replies showing in the count on forumdisplay than were visible in the thread, people would start to wonder.