Adding to George's answers:
Present perfect tense is used with an unspecified time in the past.
You don't use it with a specific time such as yesterday.
Actually, the rule is that you never use it with a completed time, but you can
use it with specific times that are not completed because they still have a connection with "now".
An example would be "today", "this week" or "this month" while "yesterday", "last week" and "last month" can't be used.
1)whats the difference between " i stopped smoking" and " i stopped to smoke"
( teacher says that i should look at gerunds and infinitives for this)
The gerund, ("smoking") with "stop" indicates what is stopped.
The infinitive ("to smoke") with "stop" indicates why another thing was stopped.
In case this isn't clear:
I stopped smoking = I don't smoke anymore.
I stopped to smoke. = I stopped something else (e.g. walking) in order to smoke.
2)why cant you say " i've been knowing him for 2 years"
"Know" is just one of a number of verbs that is not used in the present
The reason is that the process of knowing something is expressed in a phrasal verb ("get to know"). So if you refer to an ongoing action you should use it and this sentence would be correct as "I've been getting to know him for 2 years."
6) why do you say "on" christmas day but not "at" christmas
If using "Christmas" rather than "Christmas Day" indicates the season
rather than a specific day, then I believe "at" would be perfectly acceptable.
There's no reason for these, there are patterns to preposition use but nothing more. With prepositions you'll just have to memorize them, there's no easy reasoning that lets you deduce them all.
e.g. "on" because it's one day, not a range of days that it's "in" as a month