Every time my phone does a handover between cells, makes/receives a phone call, sends/receives a text, is switched on/off, it will update the HLR with the cells that it can currently see.
It will also update every 90 minutes in the absence of any of the above.
If you know the lat/lon of the towers, you can approximate that the phone is "in between" them.
This is very inaccurate.
Also, it is inaccurate temporaly. The phone updates. A system polls the location every 15 minutes, and if it's changed, it updates this site.
Unless you can get access to your phone company's HLR, you can't use this method.
GPS is very accurate. However, what you see on the page isn't necesssarily. The bluetooth device sends its location to the phone via bluetooth. A thread in the Java app on the phone puts that location in a queue. Another "sender" queue sends the most recent location once ever X seconds, which updates a database. The page /location/ polls in the background for the latest location every 15 seconds, and moves the map to it. Also, the timestamp displayed for GPS isn't the actual GPS timestamp, but the time it was received on the server (to minimise network traffic).