When it is best to use one or the other? Thanks!
In Italian, "fare" has two different distinct meanings represented by the same word. In English we use two different words to represent these meanings.
"To make" is a synonymous with "to create" (creare).
"To do" is just a general word describing an action.
This is how they're most commonly used, but they are both very common words and have other uses as well.
"To make somebody do something" means "to force somebody to do something".
"The mother made her kids go to the dentist."
"To make something something" means "to change something into something else".
"He made the house blue" - He painted the house blue)
"She made her sons athletes." - She raised her sons to be athletes. This could also be interpreted as "She created athletes for her sons", but you can tell from the context that that makes no sense.
They both exist in phrasal verbs where they can't be interpreted literally. These just have to be memorised individually.
"To make a bed" literally means "to construct a bed as a (carpenter)", but it's also a phrasal verb that refers to the act of making the bedsheets and pillows neat.
"To make a mistake" should logically be "to do a mistake", but the latter is incorrect because that's just the way English is.
If you can't replace "make" with "create", you're probably dealing with a phrasal verb.