Não existem sinônimos perfeitos. Tudo dependerá do contexto.
Um inimigo é alguém com quem há hostilidade declarada, ódio ou conflito direto. Um rival é alguém com quem se disputa algo, mas sem necessariamente haver inimizade ou ódio, podendo ser só um concorrente, um adversário. Já um desafeto é alguém com quem se tem antipatia ou desavença, mas sem necessariamente ser um inimigo ou rival. Em outras palavras, dois políticos podem ser rivais, mas não necessariamente inimigos ou desafetos.
Agora, esses três vocábulos podem ser, contextualmente, intercambiáveis. Veja um exemplo: «O presidente se recusou a conversar com seu antigo inimigo/rival/desafeto.»
Entenda: não há sinonímia absoluta, mas contextualmente se pode usar uma palavra por outra, ainda que cada palavra carregue sua própria carga emocional.
Sempre às ordens!