A major headache, grounds for divorce, plausible excuse for murder, etc...
But actually the answer is a lot more complicated. The quick answer is it's a unit of deployment that generally includes content such as .aspx application pages, list schemas, customizations expressed in CAML (potentially huge XML files without much documentation.)
JD's suggestion for Ted Pattison's book is a good one but I suggest picking up a few books because you'll usually find something in one that you don't find in another and it will help you to see what is required by convention and what is just a particular author's preference.
You will really need to comb a lot of different sources and plan on spending a considerable amount of time with SharePoint before becoming comfortable with these concepts.