In essence it's a "pointer to a function": it allows you to store the address of a function in a variable and then call it later, without having to know exactly what function you are calling at that point.
This allows you to change what code does without changing the code!
For example, you might have a bit of code which outputs a page of information from yoru database. If you use a delegate, you can make it work to the screen or a printer without changing the actual method at all, by passing it a different "output function" which does the actual output.
There is a lot more to it than that, and you need to read up on it properly:
http://msdn.microsoft.com/en-gb/library/ms173171.aspx[
^] is worth reading before you submit your homework.