If a CSR has already been submitted with the given certname, then the operation fails. If a private and public key pair already exist, they are used to generate the CSR. Using Puppet modules and various other data sources, it compiles its own configuration catalog, and then immediately applies the catalog.
Puppet apply is a core command that manages systems without contacting a Puppet master server. Using Puppet code and various other data sources, Puppet Server compiles configurations for any number of Puppet agents. It requests a configuration catalog from a Puppet master server, then ensures that all resources in that catalog are in their desired state. Puppet agent is a core service that manages systems, with the help of a Puppet master.