Olá, Better!
Para resolver a primeira parte da sua dúvida, você pode adicionar uma verificação no método detalhar para verificar se o destino com o nome informado existe no sistema. Se não existir, você pode retornar uma mensagem informando que o destino não foi encontrado. Você pode fazer isso da seguinte maneira:
@GetMapping("/{nome}")
public ResponseEntity detalhar(@PathVariable String nome){
    var destinos = destinosRepository.getDestinoByNome(nome);
    
    if (destinos.isEmpty()) {
        return ResponseEntity.notFound().body("Destino não encontrado");
    }
    
    return ResponseEntity.ok(new DadosDetalhamentoDestinos(destinos));
}
Dessa forma, se o destino não for encontrado, será retornado um status 404 (Not Found) com a mensagem "Destino não encontrado".
Quanto à segunda parte da sua dúvida, para permitir que o usuário pesquise um nome independentemente de letras maiúsculas ou minúsculas, você pode converter o nome informado para um formato padrão antes de realizar a pesquisa. Por exemplo, você pode converter o nome para letras minúsculas usando o método toLowerCase() da classe String. Assim, você pode comparar o nome informado em letras minúsculas com os nomes armazenados no sistema, que também estarão em letras minúsculas. Veja um exemplo:
@GetMapping("/{nome}")
public ResponseEntity detalhar(@PathVariable String nome){
    var nomePesquisado = nome.toLowerCase();
    var destinos = destinosRepository.getDestinoByNome(nomePesquisado);
    
    // Restante do código...
}
Dessa forma, se o usuário informar um nome com letras maiúsculas ou minúsculas, o nome será convertido para letras minúsculas antes de realizar a pesquisa.
Espero ter ajudado e bons estudos!