"key", "each", "pos", "range". These are often very useful as local
Disagree. They are too generic as pointed by another answer. To generic variable is not a good variable, unless the program is one page long.
The good thing is PHP allows them to be used as variables and do not give you some strange error as in .NET. If php is intellegent enough to know what is a variable and what is not, it is a good thing.
Should I use it as variable or function names?
The whole purpose of writing good code is that it should be clean, easy to read and maintain and with less confusion. You would be adding to confusion if you use reserved keywords as variable names and function names. Keeping in traditions with other languages, it is a bad practice to use keywords as variable names etc. In short, you should be consistent, do not use keywords purpose other than keywords (and also to comply with other languages), but if you want to, you can.
Here is a quick program that I wrote which is perhaps only possible in PHP :)
echo "The sum of $n1 and $n2 is ".addnumbers($n1,$n2);
function addnumbers($a, $b)
$return = $a+$b;