Delegate и MulticastDelegate.

Delegate и MulticastDelegate, в чём между ними разница? И зачем нужен MulticastDelegate, если есть Delegate?

Про делегаты почитайте тут: https://professorweb.ru/my/csharp/charp_theory/level10/10_1.php

Или просмотрите на ЭТОМ видеоуроке, где автор реально круто описывает делегаты и что с ними можно и нужно делать.

Мульти-адресный делегат представляет собой класс, наследуемый от класса делегата, и немного расширяющий его функционал. По сути Мульти-адресный делегат делегат позволяют осуществлять подписку множества методов на один объект в виде экземпляра делегата, тобишь являют собой полноценную реализацию делегата, какую описывает нам его определение.

"Когда компилятор C# обрабатывает тип делегата, он автоматически генерирует запечатанный (sealed) класс, унаследованный от System.MulticastDelegate. Этот класс (в сочетании с его базовым классом System.Delegate) предоставляет необходимую инфраструктуру для делегата, чтобы хранить список методов, подлежащих вызову в более позднее время." - из источника