W sensie - są one gdzieś przechowywane na serwerze?
Tak, są to pliki na serwerze. Domyślnie chyba są w katalogach tymczasowych systemu, lokalizacje można zmienić ustawieniem w php.ini. Jednak ręczne grzebanie w nich jest bez sensu, całą obsługę masz w kodzie. A jeśli czegoś Ci brakuje to może znak, że sam wbudowany mechanizm sesji to w Twoim przypadku za mało.
Drugie pytanko c: Ile domyślnie trwa sesja i czy tą wartość można modyfikować?
Domyślnie 24 minuty, można modyfikować poprzez ustawienia w php.ini czy funkcje jak session_set_cookie_params().
stosowania mechanizmu sesji jest w ogóle dobrym rozwiązaniem?
To zależy do czego, ale ogólnie tak, nie jest to jakieś rozwiązanie niebezpieczne, sesje są powszechnie stosowane.
Są ciasteczka, ale obsługiwane są z poziomu użytkownika i to na pewno jest groźne. :P
Sesja też zostawia ciasteczko po stronie użytkownika ze swoim id. Tyle że nie ma tam danych, te na podstawie id z ciasteczka trzymane są już po stronie serwera. Jak mówiłem: zależy, tam gdzie klient nie może czegoś modyfikować trzeba to trzymać po stronie serwera i wtedy użyć np. sesji.
i czy sesja jest dla danego adresu IP?
Nie, jest oczywiście dla danego klienta - każdy dostaje swoje ciasteczko z id sesji i na tej podstawie jest identyfikowany. Gdyby było po IP to byłaby niezła zabawa zważając na to, że pod jednym zewnętrznym IP może się kryć w zasadzie dowolna liczba klientów :P