I'm not totally sure what was your question here... I assume you want to improve your sorting expression or find a mroe elegant one.
What I'd suggest is calculating a "composite" sorting value based on the three conditions that you listed. Since all of your values range from 1 to 4, it's quite easy to build a 3-digit number, where each digit is responsible for a certain condition. Something like this:
[Current level] * 100 +
([Target level short term]-[Current level]) * 10 +
([Target level long term]-[Target level short term]) * 1
if I got your logic correctly...