As you noted, all four mean "difference" as nouns, and "differentiate" as verbs.
Of the four, 區別 is the most neutral term. It simply means to "differentiate" without making any value judgment. So you can say 要區別中文和韓文字,只要看文字裏有沒有圓圈圈。
Because of the word 差literally means "inferior," a slight value judgment can creep in when using 差別。So racial discrimination can be written as 種族差別得遇,but not really 種族區別待遇。In casual everyday use, however, the two terms are used interchangeably, except in "fixed expressions." Even in English we cannot always substitute a synonym in a fixed expression. (He's on "cloud nine." But not he's on "cumulus nine.")
Because of the word 距 literally means "distance," when using this term to compare things, you have to have some sense of "distance," either tangible or metaphorical. So you would say 他所保證的,和他所做得到的,有一段差距。(not 差異) There is a difference between what he promises and what he is able to do.