"Hals" refers to either the neck as a whole or specifically the front part of the neck (including throat) and "nakke" refers to the back part of the neck. So "hals" is what you refer to when you say that you have a sore throat, whereas "nakke" is what you refer to when you say you have neck pain. That's at least what it's like in German (where the same distinction is made).
It is probably best to think of "hals" as referring to the throat (meaning the soft tissue including the esophagus and trachea) and "nakke" as referring to the musculoskeletal part of the neck. In English, picture the difference in what you feel between a sore throat and a sore neck. At least - that is what I have found so far in using the two in Denmark.