Olá miguel, espero que esteja bem !
Então, sobre sua dúvida eu confesso que a deestruturação pode parecer um pouco complexa, mas é importante abrir as variáveis para entender o que está acontecendo.
Nesse caso o JavaScript não sabe nada sobre os índices internos dos arrays alunos e medias dentro da lista. Ele simplesmente entende que a constante lista é um array com dois elementos.
A variável lista na verdade é um array como o do bloco abaixo:
lista === [
['João', 'Juliana', 'Caio', 'Ana'], // índice 0
[10, 8, 7.5, 9] // índice 1
]
Então quando você desestrutura ele em duas variáveis ele pega a poxição 0 e 1 que são as que eu mostrei no bloco de cima
Sendo assim o código abaixo faz o seguinte
const [alunos, medias] = lista;
Espero ter ajudado!
Se tiver mais dúvidas só me falar!