That first condition is redundant if index.html exists (the -f will get it), but if you want to do it as a safety/sanity check, I tend to do so as a distinct rule, like so:
RewriteRule ^index\.html - [L]
RewriteRule ^(favicon\.ico|robots\.txt)$ - [L]
Where the hyphen says "don't rewrite it".
The reason for having distinct rules being both readability and because despite being written first the rewrite conditions are checked after the first part of the RewriteRule is tested - so it feels better having distinct rules. (There'll be a (probably very minor) performance benefit too.)
I've not had problems with ErrorDocument - it is necessary to set it with cPanel, but all I do is this:
ErrorDocument 404 default
ErrorDocument 403 default
ErrorDocument 410 default
ErrorDocument 500 default
Don't remember if the order is relevant, but I have them after the RewriteEngine On line but before any rules are listed.
HTML5 History stuff is piss easy - just use this: https://github.com/browserstate/history.js/
There should be enough docs/examples/etc there to get it going, but I can probably answer questions if it misses anything.