Association means two classes have some kind of relationship, could be anything really.
Composition and aggregation are two kinds of associations. The easiest way to distinguish them is thinking about "how hard" the relationship is. Think about what happens when you delete the owner object.
Aggregation, the aggregated object continues to live. (Think order <-> product, the product continues to live).
Composition, the aggregated object dies with the owner. (Think paragraphs <-> document, the paragraphs die with the document).
An aggregation can be argued to be meaningless since there isn't really much difference between drawing a line with an non-filled arrow (association), and a line with a non-filled diamond (aggregation). The relations are very similar. Line with filled diamond (composition) is however very different.