I’m good = According to Cambridge Dictionary, ‘good’ means ‘healthy or well’: She didn’t go to the concert because she wasn’t feeling too good. “How’s your father?” “He’s good, thanks.” So, ‘I’m good’ is an informal way to give a general reply when someone greets you: “How are you?” “I’m good, thanks.”
I’m well = We commonly use ‘well’ as an adverb when something is done to a good standard or in a good way: She sings very well. He drives very well at night. We also use well as an adjective, normally after a linking verb such as be, look or get, to mean ‘in good health’:
A: How are you?
B: I’m very well, thanks. And you?
What’s the matter? You don’t look very well.
In American English, good is more common and casual than well in this context. Most authorities and grammar books say that Well and good have similar meaning, but we generally use good as an adjective and not as an adverb particularly in the context of a reply to enquiring about a person’s wellbeing.
If we have to draw a parallel between ‘I’m good’ and ‘I’m well’, we would say that if someone is clearly enquiring about your health, “I’m well,” can be the normal response. If you are confident about your good health, your responses can go either way; though ‘well’ can be reserved for more formal situations.
Here the difference can briefly be summarized:
I feel well. ✗ (excepting specifically referring to a prior illness)
I feel good. √
I am feeling well. ✗ (excepting specifically referring to a prior illness)
I am feeling good. √
I am well. ✗ (excepting specifically referring to a prior illness)
I am good. √ (Here, am is a linking verb that takes an adjectival predicate and good is that adjective.
I am doing well. √
I feel differently. ✗ (excepting feeling things with one’s hands; differently from the way in which one used to feel by touching)
I feel different. √ (In the adjective form, one can be bad/different/etc. while in the adverb form, the manner of feeling can be bad/different/etc.)
Hence, good and well are not as tricky as you might think and the whole dispute revolved around understanding how linking verbs differ from action verbs. An action verb is a verb that describes an action, like come, go, jump, eat, kick, think, cry or smile: Emily is going to college. The action verb is going. It describes what Emily is doing.
A linking verb is a verb that links the subject of the sentence to information about that subject. Linking verbs do not represent action: to be (is/ am/ are, was/ were, has been/ have been, is being/ are being, was being/ will have been, etc.) to become (become(s)/ became, has/ have/ had become, will become, will have become, etc.) to seem (seems/ seemed, has/ have/ had seemed, is/ are seeming, was/ were seeming, will seem etc.): The rose is pink. Here, ‘is‘ is a linking verb that connects the subject, rose, to information about that subject (that it is pink). The teacher is intelligent. Here ‘is‘ is a linking verb that connects the subject, teacher, to information about that subject (that he is intelligent).
Notice that we also use ‘I’m good’ to reject and to ridicule an offered good or service by feigning satiation when ‘No thank you’ will just not do.
A: Would you like to go out for a ride? The weather is so lovely!
B: ‘No, I’m good.’