CUPS is a program that implements the Internet Printing Protocol, basically a way to send, view, and cancel print jobs over an HTTP API. If you have a local printer connected with a parallel port, you can run CUPS and have other machines send to it. The other thing CUPS does is conversions: you can send a PDF to CUPS, and it will run the driver to convert it to whatever format the printer needs. So an application that talks to CUPS only needs to know how to generate PDFs. CUPS also supports talking to remote print servers, e.g., other CUPS servers, printers that natively speak IPP, or printers that speak some other protocol.
Google Cloud Print is a service which has the unusual property that printers connect to it, not vice versa. Therefore you can print a document to a Google Cloud Print printer without being on the same network, which IPP doesn't let you do. (For printers without direct GCP support, you'd need to leave a computer plugged into it and running, but some newer printers with built-in networking know how to talk to Google and let you register it to your Google account.)
(There's something called the "IPP sharing extensions" (IIRC) for supporting things like central print servers with auth, proxying and whatnot for enterprise deployments)