problem is that I can not get the .htaccess in the root folder to strip the .html and .php from the all of the sites and sub-sites.
This is because the htaccess file in the root folder is outside of the document root for the site1.com, site2.com, etc sites. They can't traverse any further up than the "site1" folder.
Additionally, your rule will never work because your condition is only applied to the first rule, the second rule has free reign to rewrite everything and cause a loop. You need to duplicate your conditions:
DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
Since your root htaccess file is completely unaccessible by the site1.com/site2.com/etc sites, you need to duplicate those rules in each of your sites.