NVL is a function which only takes two parameters and returns the first if it is not NULL, otherwise it returns the second. NVL always evaluates both arguments/expressions.
COALESCEĀ is a function that will return the first non-NULL item in its parameter list. COALESCE doesn’t evaluate anything after it finds the first non-NULL argument.
Note: Depending on the use case, one may be better than the other especially when working on custom fields whose values are derived from a formula, saved searches, as well as conditions when working with workflows.