Qual é a diferença entre "rb +" e "ab" em fopen ()?

Eu não entendo a diferença entre o"ab" e"rb+" modos ao usarfopen() em C.

Por que eu escolheria um em vez do outro?