> [conditions are] handled by a higher level of the call stack without unwinding the call stack, and allow for the determination of which particular condition handler to be made independently (and at a higher level of the call stack) than the implementation of the handler.
Is exactly what the higher-order function I described would let you do. Why do we need conditions?
Edit: the answer to this question is "because we want to use exceptions". But there's really no need to.
> Is exactly what the higher-order function I described would let you do. Why do we need conditions?
Because conditions let you do that correctly without e.g. changing all intermediate pieces of code so they forward some sort of gigantic mapping of callables through the stack.
A possible benefit of conditions in Common Lisp is more than 25 years worth of implementation experience and full documentation of how the system is structured.
Extensive literature about the language is a defining feature of Lisp.