In Emacs there are commands to move cursor across expressions delimited in parentheses (or any brackets), namely forward-sexp, backward-sexp, forward-list and backward-list. In Lisp and any other code they behave similarly, so i see no difference between *-sexp and *-list except the last do not work inside comments or quotes.
What is the functional difference between sexp and list commands, and when should i use which?
Just in case, i understand the up-list and down-list commands, they are irrelevant to the topic.
A list is one example of an s-expression, so any function which operates on s-expressions should work on lists (but not necessarily vice-versa, as there are also non-list sexps).
The elisp manual says:
C-hig
(elisp) Intro Eval
RET