I´m going to summarize a chapter from a German book called "Flugzeugkatastrophen"; much of this information has already been said here, but there are some "new" things:
TFN is badly situated, very prone to bad weather and fog. It has a history of weather related accidents. There´s the following anecdote: The people who planned to build the first Tenerife a/p made an X on a map to mark the place at which no airport ever must be built - this X was mistaken for the opposite.
That morning, at LPA a separatist group´s bomb had exploded (no Algerians, but rather some loonies wanting the Canaries to be an independent African state...), all traffic was diverted to TFN, then the Canaries´ second a/p.
Consequently, the PA 747, carrying pax from the US to their cruise ship on Gran Canaria and the KL 747, carrying pax from the Netherlands to LPA ended up at TFN. KL arrived at 1338, PA at 1408. A total of 11 a/c waited at TFN at that time for LPA to reopen.
KL did not have enough fuel for the flight to LPA and back to AMS, so they decided to get fuel at TFN. PA still had 37,500 lbs. They would have left around 1530 but were blocked by the refuelling KL.
At 1653 the 2 planes started rolling. KL rolled in front of PA. Because part of the apron and taxiway was blocked by other planes (TFN was operating at 200% of its capacity), KL was to roll all the way down the runway, do a 180 degree turn there. PA was to exit the runway via the 3rd of 4 exits, then continue parallel to the runway and t/o behind KL. Visibility was about 100 m (the runway is 3500 m long).
Using exit 3 would have involved 2 148 degree turns, plus the PA would have rolled over gras. Therefore, and because exit 1 was closed, PA mistook "exit 3" for "3rd open exit", which was exit 4. The exits where not marked, so crews had to count them to know which was which. No r/w lights were available (even on request by KL) - I guess it was rather easy to get lost in the fog (remember the 100 m visibility).
KL communicated exclusively with approach control, while PA´s clearance to roll on the runway had been issued by ground control. KL was not aware PA was rolling behind them on the runway as well. The tower was not manned at that time because of lack of staff.
Well, and then came this mix up about the t/o clearance, KL understood they had it (partly because of the controller´s bad English), asked for a confirmation, and the reply "OK...standby for take off. I will call you." was understood as a mere "K". I understood that as a result of this accident the word "take off" is used exclusively when t/o clearance is actually granted.
Visibility had increased to 900 m, but the a/c were about 1500 m apart.
At 1705:41 KL started her take off roll, the impact occurred at 1706:50. PA had begun to turn into exit 4 meanwhile, hence no head on collision. There were 7 firefighters on duty at the a/p at that moment.