以下は、私の知る限り、理論的には機能するはずですが、そうではありません。
td small.attachments {
display: none;
}
td small.attachments:first-child {
display: inline-block !important;
}
<table>
<tr>
<td class="views-field-field-entry-images-fid">
<a href="#"><img src="x.jpg" /></a>
<small class="attachments">Files<div class="file-listing">Content A + B</div></small>
<small class="attachments">Files<div class="file-listing">Content B</div></small>
<small class="links">Links<div class="file-listing">Content C</div></small>
</td>
</tr>
</table>
その結果、small.attachments 要素に small.attachment 兄弟がない場合はいつでも、first-child ルールが適用され、display:none ルールがオーバーライドされて、正常に表示されます。
ただし、TD に 2 つの small.attachments 要素が次々にある場合 (上記の例)、両方が非表示になり、first-child ルールは効果がありません。
どうしたの?
PS: Safari と Firefox でテストしました。