Distributed Computing: an abstract concept. Very general.

Cluster: tightly-coupled distributed computing. A Cluster is usually inside the same room, using same computers, same OSs, connected using dedicated clustering software.

Grid: loosely-coupled distributed computing. A Grid is usally dispersed anywhere far-away from each other, and you do not know what computers, what OS on each node, you only know they communicate via HTTP(s)/XML in a black-box style. More flexible.

Parallel Computing: very tightly-coupled distributed computing, like a few CPUs inside a PC. Parallelism was a dream in 1980-1990 but that concept failed, because many things cannot be split into parallel tasks. The overhead to write parallel algorithm is tramendous. People no longer use this term much these years.

P2P: an extremely loosely-coupled distributed computing. Since the name was ruined by Napster, people try to avoid using this term in their serious projects.

In particular, for Cluster vs. Grid, I have some further comparison:

Cluster: PCs inside a same locked room; Grid: distributed, not in same room.

Cluster: ususally same OS, same machines; Grid: very different unknown platforms;

Cluster: tightly-coupled system; Grid: loosely-coupled system.

Cluster: bound together by TCP/IP on LAN; Grid: connected by HTTP/XML on WAN.

Cluster: like teamwork; Grid: like collaboration

Rajkumar Buyya’s point of view:

Grid is a type of parallel and distributed system that enables the sharing, selection, and aggregation of geographically distributed "autonomous" resources dynamically at runtime depending on their availability, capability, performance, cost, and users’ quality-of-service requirements.