The function function tells the AutoLISP interpreter that the supplied symbol is to be interpreted as a functional argument (rather than a quoted symbol).
What I gather is that "+" (your example) and "append" (my example) are functions, but can also be symbols as well.
I tried coding (my example) the other ways that you had listed and I always got "pts bad argument type". Am I missing something there?
Is function used more for performance reasons then?
(apply (function append) pts)))
What happens here is the list of arguments is passed and appended together, I think