Summary and purpose of CCK?
Drupal comes with core content types like story and blog. For such a content type, go to 'Create content' and submit a new story or blog. That's sufficient for pages of pure text and with or without attachments.
But what if your users want to be able to submit reviews of their favorite aardvark? That would be a new content type, but I want to be able to display other stuff as well as a chunk of text for every node of that type, and I don't want it to be just attached file links.
My options: I could hack the story.module, OR I could see if someone has already created an aardvark.module for the exact type of content I want, OR using CCK I could create a new content type called Aardvark Review.
Using CCK, I can create a content type that has exactly the fields I need, no more or less. My Aardvark Review for instance might have:
text field (comments on the aardvark)
dropdown menu (aardvark color)
audio file (recording of the aardvark's grunting)
image (photo of aardvark)
The CCK admin interface for creating these new content types is nice and easy: just create your new type and then click through, adding the type of fields you want it to have and what their parameters will be (how much text for the review? which colors in the dropdown menu?). There are many add-ons available in the downloads section under CCK that add new kinds of fields to your options (video field, audio field, calculated values and vastly more complicated ones).
From the users' perspective, they'll just click on Create content > Aardvark Review and get a form that asks them to submit their review, the aardvark's color, a recording, and picture.
Further Reading http://drupal.org/modules/cck/documentation
Module Download Page http://drupal.org/project/cck
Module Download Link http://ftp.drupal.org/files/projects/cck-6.x-2.9.tar.gz