Это число параметров универсального типа в CLS-совместимых именах классов. Это необходимо, потому что типы могут быть перегружены по ряду параметров; e.g.:
class Foo { }
class Foo<T1> { }
class Foo<T1, T2> { }
Чтобы различать эти случаи, компилятор генерирует следующие разные имена:
Foo
Foo`1
Foo`2
Обратите внимание, что, хотя это требование поставщика CLS, оно не является требованием или ограничением CLR. Что касается самого CLR, универсальный тип может иметь любое имя, но никакие два типа не могут иметь одно и то же полное имя. Отсюда необходимость в схеме искажения спины.