Originally Posted by Artashes
I don't run a web hosting company, so my explanation will be less technical and from the perspective of a client.
WHMCS is a software used by web hosting companies to support and bill their clients. The software can also be automated enough to run your whole operation (from provisioning servers, sell domains to answering support tickets).
WHM is the back-end software of cPanel (which is a popular control panel). The access to one is often given to clients of reseller hosting, because they are able to use it to add/remove clients, setup their own packages and perform other administrative tasks.
A control panel is an easy to use software that is usually given to clients of web hosting packages in order to have an easier way to manage their hosting account: setup email accounts, update their website, check website statistics, etc. The most popular control panel is cPanel, but Plesk and DirectAdmin are also frequently used.
You've pretty much nailed it. To add to that:
WHM is a permission based control panel so there are multiple level access:
1. Root access: Root access basically enables you to control every aspect of the servers configuration. The root user would set the basis for everyone else (default PHP, what modules are installed and so on). Then you have the reseller based WHM account which has significantly less permissions than the root user (basically granting you access to nothing that can change a global configuration as this would apply to other reseller clients also, not to mention security implications).
The root user can specify what a reseller would have access to in WHM using the feature manager.
In most cases you would get root access if you opted for a VPS or Dedicated server. I say in most cases because certain providers do not offer full root access on fully managed services so they are able to manage the service properly without you altering the servers configuration. A reseller or end client should never have root access (shared & reseller hosting) as you basically have access to everything on the server.
WHMCS is basically an automation software. With it, you can integrate it with multiple servers (using WHM or another control panel) and that'll handle many aspects: creation, suspension and termination of accounts. Support. Billing and so on.
An important note, WHMCS does support multiple control panels other than cPanel / WHM though it is called WHMCS because it was originally intended to just be for cPanel and WHM (The name stands for Web Host Manager Complete Solution).
You can see the control panels WHMCS supports here