For the "index.html" redirect:
Comment-out the RewriteCond and instead add the NS flag to your existing [R=301,L] package. If the rule works as intended, you can dump the Condition. Never put something in a Condition if it can go in the body of the Rule. (In theory, NS is all you ever need in an index-redirect rule. In practice, there have been weird exceptions.)
In the Rule itself, you don't need to consider parameters, so all you need is a final
with a pipe-separated list of only the extensions that your site actually uses. All others can take a 404 and lump it-- unless you've got desirable links giving the wrong name, and you can't persuade them to change.
The html/htm redirect is only needed if, again, you are getting actual requests from humans using the wrong extension. Or if a search engine has fallen in love with the wrong form and keeps requesting it year after year. Come to think of it, if you never use .html and the only requests are from search engines, you may be better off slapping on a general 410. It might persuade them to stop bugging you.