I'm not the Perl guru that some folk here are, but my understanding of the $a and $b tokens is that they represent two items in the list which must be compared against each other in order to know which should come first in the list. If you had only one item to compare, the list would not be sorted at all, because each item would stay in the same place. The only way to sort is by shifting positions of two items at a time, until the entire list is properly sequenced. The specifications given for the $a and $b simply define what features one wishes to consider when comparing. Do you, for example, wish to rank them by their numerical value? by their string length? by their alphabetical order? ... and so on.
If $a only gets compared to $a, it will not move--and the list will remain unchanged. Sorting only means anything if each item gets compared to another one. On the other hand, it would seem rather strange to compare, for ranking purposes, the numerical value of one item with the string length of another--and the results of such a comparison, if Perl allowed it (I don't know if it would or not), would probably look rather illogical.