Your syntax was incorrect.
td { text-align: right }; /* This was being applied */
td:first-child { text-align: left }; /* This wasn't.. */
Should be:
td { text-align: right; }
td:first-child { text-align: left; }
Note the semi-colons – they shouldn’t be outside of the brackets {}
Other than that, you were using :first-child properly.
jsFiddle demo