A generative adversarial network trains two models against each other: a generator that produces samples and a discriminator that tries to tell them from real ones. It solves the problem of generating sharp, realistic data without an explicit likelihood. It exists because a learned critic gives a much more useful training signal for images than a per-pixel loss, which tends to produce blur.
A diffusion model learns to remove noise step by step, so that sampling starts from pure noise and arrives at a plausible sample. It solves the training instability of adversarial methods by replacing a two-player game with a single denoising objective. It exists because that objective is stable and covers the data distribution well, which is why it became the dominant approach for image generation.