The most likely cause of your trouble is that you tried to escape the literal periods in the RewriteCond -f test strings, and you are missing an [L] flag on your first rule. The combination of these errors was likely fatal, since the files would never be "found" because the REQUEST_FILENAME+\+.php was not the right path.
So let's clean up the mod_rewrite code, and fix a potentially-serious security hole first.
# If the requested extensionless URL does not resolve to an existing directory, but does resolve to
# an existing .php file when ".php" is added, internally rewrite to add ".php" to the filepath
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
#
# If the requested extensionless URL does not resolve to an existing directory, and does resolve to
# an existing .html file when ".html" is added, internally rewrite to add ".html" to the filepath
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]
Note the much-more-specific negative-match RewriteRule subpatterns, which allow any characters in the directory-path, but do not allow periods or slashes in the final "file" path, and do not allow a blank "file" path, either. This avoids the extremely-inefficient file- and directory-exists checks done by the RewriteConds in most cases; They won't be processed at all unless the RewriteRule pattern matches (See mod_rewrite documentation "Rule processing" section for confirmation & details.)
These rules will now be skipped completely if the final requested URL-path-part contains a period, ends with a slash, or is zero length.
In fact, you should also consider omitting the 'file exists' check for your lesser-used (php or html) filetype, after testing for/rewriting the other more-frequently-requested filetype first. Just rewrite to the lesser-used filetype after checking only that a directory of that name does not exist. It's a bit slower if the end result will be a 404-Not Found, but faster if the file does exist...
Now you may still be left with the MIME-type issue. In that case, I'd suggest using AddType or ForceType on one of the two filetypes, and using the [T=] flag (always along with the [L] flag) for the other. Try it both ways, and check your headers manually using the Live HTTP Headers add-on for Firefox and Mozilla browsers (or something similar).
Also be on the lookout for stray/forgotten AddType and ForceType directives and [T=] flags in subdirectories if you have .htaccess files in those subdirectories, and also for any similarly-forgotten "control panel" MIME-Type settings.
Jim