Start here. This is the direct spoken answer to practice first.
Why this question matters
Delegates and events use related syntax but expose different ownership. That difference matters when callbacks can outlive their consumers or when several handlers participate in one operation.
A delegate is a type-safe reference to one or more methods and can be passed, stored, combined, and invoked by code that owns the value. An event wraps a delegate with publisher-controlled access: outside code can subscribe and unsubscribe, but only the declaring type can normally raise or replace the event. I use a delegate for an explicit callback supplied to an operation and an event for a publisher notifying interested subscribers. The subscriber must have a clear rule for when its subscription ends.