See the application module manual page. Applications may be loaded, unloaded, started and stopped on a node or a cluster. Applications have environment variables which may be used by it’s modules to configure behaviour.
A library application may be loaded and unloaded but not started, or at least start doesn’t have the effect of creating processes.
I found the following definition in the book “Erlang and OTP in Action”.
Active versus library applications
Both active applications and library applications use the same directory layout and metadata files, and both fit into the overall OTP application framework. The main difference is that active applications have a life cycle and must be started in order to be useful. By contrast, library applications are a passive collection of modules to be used by other applications, and they don’t need to be started or stopped.