なんか本来簡単な話をわざわざやたら初心者に理解しづらい難しい話にしてるのがいるねw

Cのポインタ変数なんて実態はアドレスの入れ物だって理解するのが一番簡単なように、
デリゲートなんて関数ポインタの.NET版だと理解するのが一番簡単だって。

intのリテラル1とintの変数aの違いは、1はコンパイル時に値が確定するのに対してaの値は実行時に決まること。

デリゲートも同様。
普通のメソッド呼び出しはコンパイル時にどのメソッドが呼び出されるか確定するが、
デリゲート型の変数を使えばこれを実行時に決めることが出来る。

ただそれだけだよ。