1. Let's Encrypt, the certificate authority
2. ACME, the protocol for users to interact with Let's Encrypt
3. Boulder, an implementation of an ACME server in Go that Let's Encrypt uses
4. Certbot (formerly the Let's Encrypt client), a command line client and ACME library for Python, originally developed by the Let's Encrypt team
Any CA can use ACME to offer automated certificate issuance to their users. Anyone can implement an ACME server or client in any language. There is no "official" client or server necessary.
It's also important that Certbot was rebranded to distance it from Let's Encrypt because, personally, I think the project is doomed to fail. It tries to handle both certificate issuance and configuration of software using certificates. It attempts to abstract the process for someone who barely understands what certificates/SSL/TLS are (if at all), but requires so much detail from them in order to configure and run the client that they might well have just learned how it worked in the first place. In other words, Certbot's use case targets laymen, but requires non-layman understanding to use. It doesn't help that their documentation is very badly organized and confusing, often mixing content for the CLI and the Python Library, which have different audiences: end users and developers building an automated tool in Python.
Meanwhile, intermediate and advanced developers and system administrators who understand the concepts are much better served by a different client that simply takes care of certificate issuance without trying to automatically manage the software they will be using the certificate with. There are many, but so far I've been happy with Lego (https://github.com/xenolf/lego).