Ответ Gumbo в вопросе переполнения стека Как скрыть расширение .html с помощью Apache mod_rewrite должно работать нормально.
Re 1) Измените .html to .php
Re a.) Возможно, просто добавьте #tab
в URL.
Re b.) Это возможно с помощью QSA
(Query String Append), см. Ниже.
Этот должен также работать в пути подкаталога:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]