Controversial is the adjective form of controversy. And controversy is defined as "disagreement, typically when prolonged, public, and heated." Therefore something that is controversial is "of, producing, or marked by controversy." It has aspects of dividing public opinion over a period of time, often heatedly so.
Discordant means "not being in accord; conflicting." And one definition of accord is "a settlement or compromise of conflicting opinions." So discordant has more of the connotation of being disharmonious, being contrary, clashing with others on purpose.
Nonconcur is defined as "to refuse or fail to concur." And concur is defined as "be of the same opinion, agree; agree with a decision, opinion, or finding." So nonconcurring can be a quiet, nonpublic disagreement with something. It doesn't have to be one side or the other, it could be that there are several nonconcurring opinions. This is the word used sometimes when a Supreme Court justice has a dissenting opinion. One of Merriam-Webster's sample sentences is: The one nonconcurring judge in the case issued his own opinion.
You are correct that the meanings are similar, and it will depend on the context in which the word is used but, based on their definitions, I think controversial has a public and prolonged element to it, discordant has an intentional element to it, and nonconcurring has a thoughtful, respectful connotation.