Но наносит ли приведенный выше код реальный вред?
Да - это портит состояние класса. Похоже, этот класс не должен действительно иметь какое-либо состояние - это должны быть локальные переменные. Однако для случайного наблюдателя это выглядит как реальное состояние, связанное с объектом.
1) Как с этим справляется сборщик мусора? Если переменная класса создается 30 раз в разных методах, она потеряет отслеживание начальных объявлений и не сможет освободить память или все равно будет очищена?
Переменные экземпляра не "создаются" - они просто назначаются. И как только предыдущее значение было перезаписано, если ничто иное не ссылается на объект, на который ссылалось старое значение, этот объект будет иметь право на сборку мусора. Никакого вреда нет.
2) А как насчет производительности? Быстрее ли использовать одну и ту же переменную (ы) класса, как это, в куче разных методов или создать локальную переменную в соответствующих методах?
Я бы ожидал, что локальные переменные будут вести себя немного быстрее, если что-нибудь - но любое различие в производительности почти наверняка будет совершенно незначительным (вероятно, неизмеримо), и его не следует использовать, чтобы решить, что делаем.
Просто измените их на локальные переменные - очистите проект.