Correct! The OP didn't specify dashes so why bother adding those (to expose his script to more than it can handle)?
Ditto "many other valid URL characters." You certainly don't want to match : as it's not a valid URI character; ? as it's not a valid URI character; etc.
The value of this is that mod_rewrite can do some limited error checking for you so your scripts don't have to (albeit, it would be a good idea for them to validate the input before accessing the database).
Finally, yes, the dot character is specified following the character range definition and it's followed by html and the end anchor. What's your point? Do you want to allow multiple dots to be matched?
Specificity makes a difference in mod_rewrite. The tighter you can specify your requirements the easier it is to write good mod_rewrite code.
Okay, you do get a point for using the + metacharacter rather than the * I see all too often.
You might benefit from reading the mod_rewrite tutorial linked in my signature as it contains explanations and sample code. It's helped may members and should help you, too.