JCLLIB is a JCL stmt that defines the proclib(s) and includelib(s) to be used in processing the JOB submitted.
JES2 & JES3 are Job Entry Subsystems. They control jobstream input and spooling functions and to some extent job scheduling and resource allocation.
JES2 provides those functions for systems running on a single "tightly coupled" mainframe.
JES3 provides those functions for systems running on a multiple "loosely coupled" mainframes or a combination of both.
"Loosely coupled" means that the mainframes communicate over high speed channels (they used to call them CTCs - channel to channel adapters); "tightly coupled" means the mainframes are directly connected under the covers.
Proclib contains cataloged procedures or PROCs. APROC is roughly analogous to a subpgm. They are "called" by JOB JCL and executed.
They exist for some of the same reasons that subpgms do. If you have JCL steps that may be executed in a variety of circumstances you can create a PROC of them and execute them from a variety of JOBS or multiple times in the same job.