Man schaut in einer DB nach (oder fragt einen externen Service), zu welchem GeoCode / Kontinent / Land / Bezirk / Stadt... die entsprechende IP gehört.
Zuverlässigkeit - je nach Aktualität und Auflösung der verwendeten DB. Freie DBs gibt's AFAIK bis auf Stadt-Ebene herunter, "wichtige Länder" sind genauer abgebildet als unwichtige und manche IP-Bereiche sind gar nicht erfasst.
Je mehr Geld man ausgibt für die DB oder den Service desto besser wird's.
Das Unternehmen Maxmind bietet unter anderem eine freie Datenbank für GeoIP-Lookups an. Hatte damit letztens ein bisschen in Python rumgespielt. Das ist aber halt nur für die grobe Richtung geeignet. Vieles stimmt in der Datenbank nicht. Viele sind damit zufrieden, wenn schon mal das Land richtig ist
EDIT: Der Artikel ist gut. Sollte man auf jeden Fall lesen