(defun p2 (l)
(cond
((null l) ; condition
nil) ; body
((listp (car l)) ; condition
(values (p2 (car l)) ; \
(p2 (cdr l)))) ; /` body
(t ; condition
(princ (car l)) ; \
(princ " ") ; > body
(p2 (cdr l))))) ; /
This cond form has three clauses. Each clause is a list where the first element is a condition and the rest is a body. Cond looks at each clause in turn until it finds one where the condition is true. It then executes the body of that clause in an implicit progn. Progn returns all the values returned by the last form of its body. Cond returns all the values returned by the matching clause. A function returns all the values returned by its body (which is another implicit progn).
As to the “why”: it is defined in this (quite sensible) manner in the standard, and the implementations implement it this way.
p2returns one or twoniland that is it.princprints regardsless of return.