* 아주 and 매우 = very (modifies an adjective). 아주 is more colloquial, 매우 literary.
* 너무 = 1) too, overly, or excessively, 2) so (denotes a degree). Modifies adjectives, and sometimes verbs
* 많이 = very much; to a great degree. Usually modifies verbs directly, but it is sometimes used like 아주 as well.
Examples (colloquial phrases).
- It is very cold = 날씨가 아주/매우 춥다. (많이 can be used as a poorer choice)
- It is too cold = 날씨가 너무 춥다.
- It is so cold = 날씨가 너무/정말/진짜 춥다. (정말 = 진짜 = really)
- A lot of people came = 사람들이 많이 왔다 (= 많은 사람들이 왔다). Can't use d아주 or 매우 by itself.
- A whole lot of people came = 사람들이 아주/매우 많이 왔다.
- Too many people came = 사람들이 너무 많이 왔다.
- So many people came = 사람들이 너무 많이 왔다. (너무 can be interpreted in two ways)
The original meaning of 너무 is "excessively". Using it like "so" is very colloquial and should be avoided in formal contexts.
좋다 (and other emotive adjectives like 싫다, 슬프다, etc) is reserved for the first person for stronger effect( when used in the present tense in the main clause). For the second and third person, the corresponding verb 좋아하다 (and 싫어하다, 슬퍼하다, etc) should be used.
1. 나는 개보다 고양이가 (더) 좋다. (note 가 which sets the lower level subject)
= Speaking of me, cats are better than dogs.
2. 내 친구는 개보다 고양이를 (더) 좋아한다. (note 를)
= As for my friend, he likes cats better than dogs => My friend likes cats better than dogs.
#1 is a two-level structure not found in languages like English. You set the high level topic(it's about 나) with 는, and make the point by constructing a full sentence after it.
#2 is more like a normal S + O + V structure.