:last-child is a pseudo-class, whereas :after (or ::after in CSS3) is a pseudo-element.
To quote the standard:
Pseudo-classes are allowed anywhere in selectors while pseudo-elements may only be appended after the last simple selector of the selector.
This means your syntax is correct according to CSS2.1 and CSS3 as well, i.e. IE8 still sucks 😉