
Вопрос 1: Что такое this.sum и зачем это использовать, почему нельзя просто создать другое поле класса и его использовать ?
Вопрос 2:

Долго пытался понять зачем, как, почему, что ? Что тут происходит и зачем
Заранее спасибо за ответы!
this.sum - обращение к полю класса sum (которое объявлено в самом начале класса - ещё до методов). Если написать просто sum - это обращение к формальному параметру sum.
taken = del; - присваивание полю класса taken (которое объявлено в самом начале класса - ещё до методов) значения формального параметра del. Т.к. в данном случае конфликта имён нет и this. перед taken писать не требуется.
Это не "делегаты", а элементарные базовые знания ООП, которые изучались много уроков назад и, похоже, прошли мимо твоего сознания.
Имя переменной, поля, параметра, метода должно отображать его смысл. Если это сумма, зачем называть как-то иначе?
>Что такое this.sum и зачем это использовать, почему нельзя просто создать другое поле класса и его использовать ?
Можно и нужно. В данном случае this нужно, чтобы не перепутать поле класса и формальный параметр. Такой нейминг - это нехорошо. Более того, если бы класс был статическим, это бы вообще не сработало, поскольку в таких классах отсутствует указатель this.
>Долго пытался понять зачем, как, почему, что ?
Просто сохраняется некая переменная для какого-то дальнейшего использования.
Делегат проще понять в контексте метода или функции. Если делегат это функция, тогда мы можем передать функцию как параметр в другую функцию. В данном случае в методе registrhandler просто передали функцию, метод или анонимную функцию.