(describe-function apply)
says:
apply is a built-in function in ‘src/eval.c’.
(apply FUNCTION &rest ARGUMENTS)
Call FUNCTION with our remaining args, using our last arg as list of
args.
Then return the value FUNCTION returns.
Thus, (apply '+ 1 2 '(3 4)) returns 10.
(describe-function funcall)
says:
funcall is a built-in function in ‘src/eval.c’.
(funcall FUNCTION &rest ARGUMENTS)
Call first argument as a function, passing remaining arguments to it.
Return the value that function returns.
Thus, (funcall 'cons 'x 'y) returns (x . y).
What is the difference between these two function?