In my mind what defines cloud computing is that the underlying compute resources (storage, processors, RAM, load balancers, etc) of cloud-based services and software are entirely abstracted from the consumer of the software / services. This means that the vendor of cloud based resources is taking responsibility for the performance / reliability / scalability of the computing environment.
From an application developers point of view, this can be a tremendous advantage, as procuring, maintaining, tuning, monitoring and scaling hardware to meet the demands of growth is both difficult and expensive.
For smaller ISV's, cloud computing offers the ability to prototype, test and deploy software without any capital expense.
For larger applications, the benefit is generally unlimited scalability and what amounts to the outsourcing of IT / application hosting responsibilities, as well as instant access to new servers / storage / whatever on demand. Often cloud providers will offer levels of redundancy, reliability and even security all but the largest in-house IT shops could never achieve for the sheer cost of it all.
The main disadvantage to application developers is loss of control. Not only is the hardware externally hosted in a cloud environment, but abstracted, so if your application needs direct control over hardware, you're out of luck. And you need to trust the cloud provider. They all offer 99.9% repeating up time and SLA's, but I doubt those stats are actually realized. But you have to ask yourself, could I do better? The answer is often no. But control of hardware isn't the only place control is lost - integration with cloud based systems can also be more difficult than on premise or self-managed software for obvious reasons. However, it seems to me that this roadblock is evaporating as new technologies and robust API's eliminate many integration difficulties created when running applications outside the LAN/WAN.
Another disadvantage can be performance. Running an application on your local LAN will probably provide a somewhat snappier experience to local users than running from the cloud. But if your audience is distributed, that benefit may only apply to a subset of your application's audience.
Distributed computing, as has been said already a few times, is just computing orchestrated between two or more computers. Cloud Computing is, by definition, distributed computing, but a specialized form.
Here is a nice whitepaper by David Chappell. It is a Microsoft sponsored paper, so it is presented in terms of Microsoft's cloud platform (Azure) but the underlying principles are pretty universal, and David Chappell is always a pretty easy read.