Parametr a przy fopen umożliwia stworzenie pliku gdy on nie istnieje więc co najwyżej może wywalić błąd, że nie ma praw do jego utworzenia/odczytu/zapisu(is_writable() służy do sprawdzenia czy do pliku można zapisywać - oczywiście sprawdza ona od razu czy plik istnieje ale fopen sam go stworzy więc trochę to zbędne).
is_writable służy do sprawdzenia czy plik istnieje i czy można do niego zapisywać. Jeżeli 2 te warunki są spełnione zwróci true, w przeciwnym wypadku false. A o tym że a spróbuje utworzyć plik zapomniałem