Your data is useless as it does not show your problem and is not consumable. (ie CREATE TABLE .. INSERT.. etc)
You are counting all the result set, not just table b.
Your first query should probably be something like:
SELECT a.Id, a.Name, COUNT (b.School_Type_Id) AS Total
FROM School_Type a
LEFT JOIN School_To_School_Type b
ON a.Id = b.School_Type_Id
GROUP BY a.Id, a.Name;