P1 - Twoje hasło MySQL i inne ustawienia specyficzne dla aplikacji powinny być przechowywane w osobnym pliku poza twoim webrootem. Możesz go usunąć bezpośrednio z webroot lub ograniczyć przez .htaccess. Możesz dołączyć plik lub odczytać z niego, o ile znasz ścieżkę.
Q2 - Pliki binarne powinny być również przechowywane poza webrootem. Idealnym sposobem ich obsługi byłoby pobranie ich za pomocą pliku PHP. W ten sposób możesz przeprowadzić uwierzytelnianie przed udostępnieniem pliku, a linki mogą być tymczasowe, aby użytkownicy nie mogli udostępniać ich innym osobom
Q3 - Jeśli używasz powyższej metody, nie musisz przechowywać jej jako BLOB w MySQL
P4 - Tak naprawdę nie natknąłem się na nic, co robi i jest biblioteką/autonomicznym skryptem. Podawanie ich za pomocą właściwych nagłówków nie powinno być jednak zbyt trudne.