Я не уверен, что ": after" существует, но кроме этого:
1) Тип возвращаемого значения будет одинаковым для любого из них (при условии, что он является действительным селектором)
2) Разница довольно небольшая, в основном она связана с тем, как вы предпочитаете поступать с вещами, и в некоторых случаях «: first» может быть не совсем тем, что вы хотите, например, в цикле. Существуют аргументы, из-за которых накладные расходы самые лучшие, но я не знаю достаточно, чтобы комментировать.
3) Абсолютно, поскольку тип возвращаемого значения точно такой же (элемент jQuery), вы можете использовать их точно так же.
например:
$ ( "# Test") родитель ().
вернется точно так же, как
$ ( "# Тесты: родитель");
Пример:
http://jsfiddle.net/HenryGarle/2qcpK/
<div id="Parent1">
<div id="Test1">Text</div>
</div>
<div id="Parent2">
<div id="Test2">Text</div>
</div>
// replaces the content of Test1's parent
$("#Test1").parent().html("New Parent 1 content");
// replaces the content of Test2's parent
$("#Test2:parent").html("New Parent 2 content");
В результате DOM будет выглядеть следующим образом:
<div id="Parent1">
New Parent 1 content
</div>
<div id="Parent2">
New Parent 2 content
</div>