A diferença entre usar * e usar o nome de uma coluna é que com o nome de coluna ele não conta seus valores NULL, e * conta todas as linhas, mesmo que todas as colunas sejam NULL. O trecho a seguir foi retirado de um trecho de livro sobre o Oracle.
http://my.safaribooksonline.com/0131451316/ch05lev1sec2
Following is an example of the COUNT function used with a database column as a parameter. The difference is that COUNT(*) counts rows that contain null values, whereas COUNT with a column excludes rows that contain nulls.
SELECT COUNT(final_grade), COUNT(section_id), COUNT(*)
FROM enrollment
COUNT(FINAL_GRADE) COUNT(SECTION_ID) COUNT(*)
------------------ ----------------- ---------
1 226 226