Os indicadores nos dois arquivos de entrada (a primeira coluna) não são exclusivos, por isso é difícil usá-los como chaves. Mas se os IDs da região forem exclusivos, podemos usá-los:
$ awk 'FNR == NR { reg=$4; low[reg]=$2; high[reg]=$3; ind[reg]=$1; next}
{ for (reg in ind) {
if ($1 == ind[reg] && $2 >= low[reg] && $2 <= high[reg]) {
print $0,reg
} } }' index.txt total.txt
1 423 R1
1 2342 R1
2 789 R2
2 5332 R3
2 6762 R3
Este é basicamente o seu código, com o loop for incluído para mapear as regiões para seus indicadores e verificar quais das linhas no segundo arquivo correspondem.
(como para 2 789 R2
vs 2 809 R2
, não sei por que 809 deve ser impresso se os limites forem 600 e 800.)
Altere o comando de impressão para print $0,reg > reg ".txt"
para obter a saída para arquivos nomeados pelas regiões.