I'd like to vote for 1. head/tail
The pair is symmetric in its meaning, has the same length (4 letters) which sometimes gives better look for source codes, has similarity with the Unix head(1) and tail(1) command, and also has in common with, say, J Programming Language (http://www.jsoftware.com/help/dictionary/vocabul.htm). I know that several languages already use 'tail' to mean 'except the head', but I don't think that makes big confusion... If I choose from the list you posted, I like 2. Haskell/Scala: head/last