It's a recursive method. So first you need a base case to make sure it will be able to stop at some point.
Here, it's the first condition (if one of the args is missing, just return the other one). Note that this works even if the function was called initially with one empty list, so this seems relevant.
Then basically it checks which list has the lowest first element (this is the correct idea: the lowest value out of the two is the one that should go to the result first).
After this, the element you just retained will be prepended with the result of the same function minus the item you just selected (since it is now the first element).
So here is an example
1 -> 5 -> 10
3 -> 4 -> 9 -> 11
The idea is then to say "The result should start by either 1 or 3, and then the rest of the sorted list". So you choose the lowest one:
Result: 1
5 -> 10
3 -> 4 -> 9 -> 11
Then you can repeat the process by just calling the function on the remaining lists and append the new value to your result (so here you have to choose between 5 and 3):
Result: 1 -> 3
5 -> 10
4 -> 9 -> 11
and you repeat until you only get one list left:
Result: 1 -> 3 -> 4 -> 5 -> 9 -> 10
11
And here you could just append the last list completely (here there is only one element, but it would work even if there were more).
I hope I've been clear enough :)