Наиболее предпочтителен вариант 3, т.к. в этом случае предполагается, что у каждого элемента будет свой класс, что соответствует практически всем основным методологиям, и нежно любимой мной SMACSS.
На производительность каскадность влияет напрямую, т.к., во-первых, увеличивается размер css-файла, блокирующего отрисовку, а во-вторых, чтение селекторов и поиск в дереве происходит справа налево, т.е. в варианте 1 сперва найдутся все ссылки и изображения, и лишь потом из собранной кучи вычленятся те, что входят в шапку. Но идеально, конечно, будет как-то так:
.logo {
background-color: #ccc;
}
.logo-link {
color: #000;
text-decoration: none;
}
.logo-img {
display: block;
width: 100%;
}
Никакой каскадности (размер выходного css сведен к минимуму), потери производительности при выборке также минимизированы.