Что лучше auto или указывать точный тип переменно?
Все зависит от контекста применения. 
1) var list = new ObservableCollection<SomeReallyLongTypeName>();
Здесь как бы и так понятно что за тип будет у list и нет особого смысла явно говорить про это.
Таким образом мы сокращаем код и его удобней читать.
2)ComplexType businessObject = DoSomeWork().OtherWork(a,b).GetResult(someArgs);
Здесь стоит задуматся об очевидности возвращаемого типа , иногда будет удобней все-таки оставить конкретный тип.
Хотя если мы используем LINQ все же принято его юзать с auto типами. 
P.S. Решарпер классная штука но не всегда стоит вестись на все что он говорит. Почитайте Мартина "Чистый Код" или нечто в этом духе, будете себя чувствовать несколько уверенней в этих тонкостях. 
P.P.S Я ужасно пишу, я знаю, сорри;)
Краткость записи. Классический пример использование - использование итераторов.