I saw someone ask this question on Reddit. I’ll elaborate a little bit on the response I gave there. I include the Chinese character below for reference but it is not critical for you to know it, just as long as you understand root meaning of the Korean character.
결정 – 決定
경 here means decide. You may have seen in used in these words – 해결 (resolve), 판결 (ruling), 결승 (finals). 정 means set. It is used in 예정 (schedule), 규정 (regulation), 확정 (finalise). So combining them means to decide on how something will be set. It is a very commonly used word from casual conversation to formal contexts.
정하다 – 定
Still means to set, to determine, to decide. It is basically entirely the same as 결정하다 and I can’t think of an instance where it would be unnatural to use on over the other
결심 – 決心
The 결 is the same as in 결정, but instead of 정 it is replaced by 심 which means heart. So you make up your heart. It sounds more serious because you have made up your heart to do something. This word would be more often used when making a resolution or taking a stance on an important issue.
선택 – 选择
선 means select and is used in these words – 선거 (election), 선정 (select, the appropriate one from many), 선호 (preference). 택 is not often used in common Korean words but it means select as well. 택하다 is actually another word for choose/select as well but has a feel of less reason went into making the decision.
Pure Korean word meaning choose. Almost identical to 선택 with a nuance different. 선택 sounds like more thought has gone in compared to 고르다 and is used when there are less options available. If you were choosing between two very important options in your life you would use 선택, but if you were just choosing between something at McDonalds you would probably use 고르다.
Very close to 결심하다. Sounds quite strong in your resolution to do something or take a stance on something. I would use either in most situations without thinking it would be unnatural.