Tu caso es un poquito más complejo y no sirve usar COUNT() para esas discriminaciones, además que un COUNT no puede contener una condición lógica.
Código MySQL:
Ver original tabla1.id,
tabla1.nombre,
SUM(IF(tabla2.categoria
=1, 1, 0)) as Cat1
, SUM(IF(tabla2.categoria
=2, 1, 0)) as Cat2
, SUM(IF(tabla2.categoria
=3, 1, 0)) as Cat3
No estoy muy seguro de la funcionalidad del GROUP BY en este contexto porque no me puse a revisar detalladamente el ejemplo de datos que posteaste.
Luego reviso mejor.