Here is a short YT video that reveals the purpose of delegates. It helped me a lot.
Basically, delegates are types intended to contain the method signature (return value and parameters list). Another name for delegates is higher order functions.
The purpose is to manipulate methods in the same manner as parameters. This approach provides advanced programming paradigms such as multicast invoking, callbacks, code decoupling, etc..