According to its docstring, it's for cases where the user does something wrong. Calling a command on the wrong buffer, providing invalid input, things like that.
We also have a few instances where it's used to abort commands when the user answers "No" to a query. I'm not 100% sure those instances qualify, but it's certainly way better than throwing actual errors.
> Date: Wed, 18 Feb 2015 19:17:52 -0200
> From: Artur Malabarba <bruce.connor.am@gmail.com>
> Cc: Kelly Dean <kelly@prtime.org>
>
> Hi all, Kelly sent me a patch for changing a couple of `error'
> instances into `user-error'.
> It looks ok to me, but I'd appreciate if someone could confirm that
> it's alright.
Do we have guidelines for which errors should be 'user-error'?