Все эти слова имеют одно значение - "много". Но употребляются в разных случаях.
В утвердительных предложениях мы используем a lot of. А в отрицательных и вопросительных - much или many. Это зависит от того, какое существительное стоит после - исчисляемое (countable) или неисчисляемое (uncountable).
То, что мы можем подсчитать (яблоки, ананасы, ручки, книги), мы называем исчисляемым. А то, что не можем подсчитать без использования тары или меры веса, объема (молоко, газ, рис, сахар) и т. д., мы называем неисчисляемым.
С исчисляемыми существительными мы используем many (not many cats, not many books), с неисчисляемыми - much (not much water, not much rice). Но только в отрицательных и вопросительных предложениях!
В утвердительных для обеих категорий мы применяем a lot of.
Примеры.
Утвердительные предложения:
I have got a lot of apples - У меня много яблок.
I need a lot of flour - Мне нужно много муки.
Отрицательные предложения:
I haven't got many apples - У меня немного яблок.
I don't need much flour - Мне не нужно много муки.
Вопросительные предложения:
Have you got many apples? - У тебя много яблок?
Do you need much flour? - Тебе нужно много муки?
А теперь проверь себя: