The red zone is, purely and simply, an optimization that can save instructions.
It means that it's no longer necessary for the emitted code for every function to subtract from the stack pointer to make local storage like so
sub XXX, %rsp
at the beginning of every function call, even if they are not leaf functions. Often times the code emitted from the compiler can use the temporary space in the red zone below the stack pointer without needing to save it and before calling other functions. This is a useful optimization to have available.
If you no longer have to sub from the stack pointer, the emitted code can use rsp as the base pointer, a job normally reserved for rbp, and the emitted code can use rbp as another general purpose register.
This ultimately means the prologue and epilogue of each function call can save two instructions that would save and restore rbp:
pushq %rbp # prologue [ two instructions not necessary ]
movq %rbp,%rsp # epilogue [ two instructions not necessary ]
Note that in gcc you can pass the -mno-red-zone flag if you don't want it (but the x86-64 ABI requires it). The Linux kernel does not need to be ABI compliant and thus all kernel code is compiled with -mno-red-zone.
Furthermore, accessing memory beyond the stack pointer is not dangerous if that is the expected mode of operation. It's only dangerous and can lead to corruption when it's unplanned, and unexpected. When the emitted code does it, it knows what it is doing.