Как создать запрос на вывод по количеству отзывов?
SELECT
    magazin.id, -- укажи явно таблицу в выборке, потому что у тебя теперь есть две таблицы с полем id
    magazin.name,  -- укажи явно таблицу в выборке, потому что у тебя теперь есть две таблицы с полем name
    gorod,
    COUNT(otziv.id) AS 'quantity' -- добавь количество отзывов в выборку. Это не обязательно, работать будет и без этого шага
FROM 
    magazin
    LEFT JOIN otziv ON (otziv.magaz_id = magazin.id) -- присоедини таблицу
WHERE 
    gorod=$gorods
GROUP BY
    magazin.id  -- добавь группировку
ORDER BY 
    COUNT(otziv.id) DESC -- поменяй сортировку
LIMIT 
    20

PS Я бы крайне не рекомендовал использовать транслитерированный русский в названии полей никогда.
идем по шагам

select * from magazin, otzyv where magazin.id = otzyv.magaz_id

так как поле magaz_id уникально для двух таблиц можно упростить
select * from magazin, otzyv where magazin.id = magaz_id

В результате не будет информации о магазинах без отзывов. Но мы строим топ поэтому нам подойдет

решим что будет в результате
select magazin.name, count(*) as ocnt ... group by magaz_id order by ocnt 

Если нужны нулевки то вместо неявного left join из первого запроса 
пропишите соединение в явном виде
select ... from magazin left outer join otzyv on  magazin.id = magaz_id