These are helpful in assessing what functions (or pathways, or publications, or protein domains etc.) is overrepresented in a given group of genes - for example, if you've done a gene expression experiment, you might get hundreds or thousands of genes that are up- or down-regulated, and enrichment analysis is a tool to give you an idea of what those genes are and what they do, as well as give you some subsets of interesting genes to look at further. For example, in your thousands of differentially expressed genes, it might be that the set of 400 genes that have the GO term "nervous system development" are of particular interest to you.
Most enrichment analysis of this type uses a hypergeometric distribution to calculate an enrichment value. You can look up the details online if you're interested, but you don't need to know much about it unless you're programming one yourself - there are a bunch of different tools already available that will do this for you. The bit you need to understand is that the significance is calculated in a way that tells you how significantly overrepresented a particular function (or pathway, or publication, etc.) is in your list compared to a background population. Taking the "nervous system development" example, if 400 our of 500 genes are tagged with this term in your list, but 9,900 out of 10,000 genes in the whole genome are in general, this wouldn't be flagged as very significant, as it's quite a frequent term generally. However, if 400 out of 500 genes in your list are tagged with it, and only 450 out of 10,000 in the entire genome are, then that would be considered highly significant.
There are a range of different tools available that do this sort of analysis. For a quick preview of how it works, I'd recommend uploading a gene list to an InterMine database. They have different databases for different model organisms - I don't now what your favourite one is, but you can find all the links under 'Existing Mines' at intermine.org.
Thanks a lot for your help.