Je bent er bijna.. je hoeft alleen maar een buitenste join te maken:
BEWERKT:
SELECT
a.tag_id as ParentID,
a.tag_name as ParentName,
b.TotalChildren
FROM root_tags a LEFT OUTER JOIN
(
SELECT parent_id, COUNT(1) as TotalChildren
FROM root_tags
WHERE parent_id <> tag_id
GROUP BY parent_id
) b
ON a.tag_id = b.parent_id
WHERE b.TotalChildren is not null
ORDER BY ParentID