This question comes along with a lot of associated sub-questions, most of which would probably be answered by a sufficiently good introductory text. So a perfectly acceptable answer to this question would be the name of such a text. (At this point, however, I would strongly prefer a good intuitive explanation to a rigorous description of the modern theory. It would also be nice to get some picture of the historical development of the subject.)


Some sub-questions: what does the condition that d^2 = 0 means on an intuitive level? What's the intuition behind the definition of the boundary operator in simplicial homology? In what sense does homology count holes? What does this geometric picture have to do with group extensions? More generally, how does one recognize when homological ideas would be a useful way to attack a problem or further elucidate an area? 



What is (co)homology, and how does a beginner gain intuition about it?
Most of these links aim to give some geometric intuition for what homology does, so I'll try to briefly explain the algebraic intuition in case that's also useful.


A very common operation in algebra (e.g. algebraic combinatorics, representation theory) is to study a set by considering the free abelian group (or free k-vector space) on that set. Many sorts of questions are easier to answer in the linearized setting. Homology is basically the extension of this operation from sets to spaces. In fact, one can define the homology groups of a space as the homotopy groups of its infinite symmetric product (= free topological abelian monoid on the (pointed) space). If we work with simplicial sets rather than spaces, we see the connection to chain complexes. From a simplicial set we can form a simplicial abelian group by applying the free abelian group functor levelwise. The category of simplicial abelian groups turns out to be equivalent to the category of chain complexes of abelian groups, and the chain complex we get out is exactly the usual "simplicial chain complex" computing simplicial homology. If we started with the singular complex of a topological space, we would get out the singular chain complex of that space.


This doesn't explain why H\_n measures n-dimensional "holes" in a space, but hopefully it explains somewhat why homology is important and easier to compute than homotopy (because of the "linearization" process).


