Во-первых, от нечего делать на работе создал твои таблички, и NULL для пустых каталогов у меня не выводился (для них вообще не было строк в выводе результатов запроса).
Во-вторых, раз ты выводишь результаты относительно каталогов (я понял, инфа о них хранится в table2), то почему в селекте запрашиваешь table1.name?
В-третьих, попробуй вот это:
SELECT COUNT(table1.cat) AS kol, table2.name FROM table2 LEFT JOIN table1 ON table1.cat=table2.id GROUP BY table2.id;