The Linux kernel accepts commands from the various user interfaces available, but is not directly accessible by the user.

E.g. I cannot send the text string “hello” directly to the kernel, without using some kind of interface.

Anything running in userland (hence, all applications), can be directly manipulated by the user.

E.g. I can send the “HANGUP” signal to a process, which will cause it to quit whatever it's doing and exit.