Isso é por conda do...
int opcoes[4][2] = {
{ xAtual, yAtual +1},
{ xAtual +1, yAtual},
{ xAtual, yAtual -1},
{ xAtual -1, yAtual}
};
Que vem antes desse seu código.
Isso é uma matriz. Onde está o '[4]' possui os índices 0,1,2 e 3, e onde está o '[2]' possui os índices 0 e 1, que são os índices chamados nessa condição que você postou aqui.
Essa matriz do tipo int define 4 opções que a função 'rand' irá definir qual delas utilizar, escolhendo um dos índices do '[4]', se o computador através do rand, escolher por exemplo o número 2, ele irá pegar o terceiro valor desse espaço na matriz, que no caso seria esse...
int opcoes[4][2] = {
{ xAtual, yAtual +1},
{ xAtual +1, yAtual},
--> { xAtual, yAtual -1}, <--
{ xAtual -1, yAtual}
E você percebe que cada um desses quatro espaços possuem dois valores dentro dele, nesse meu exemplo da escolha do número 2 pelo 'rand', seria o 'xAtual' que possui o índice 0, e o 'yAtual -1' que logo possui o indice 1 por ser o segundo espaço.
A sua condição que você postou aqui, está simplesmente pegando os valores desses pequenos espaços através desses dois índice 0 e 1, e jogando para dentro da variável xdestino(que no caso é o do índice 0 por se tratar do eixo x na matriz 'opçoes') e jogando para a variável ydestino(que logo é o índice 1 por se tratar do eixo y).
Nesse exemplo do número 2 escolhido pelo rand, o computador está basicamente escrevendo como se fosse isso para as variáveis destino...
*xdestino = xAtual;
*ydestino = yAtual -1;