Primero asumiré que su versión de min api es más baja que la api a la que va a llamar, porque ahí es donde este tipo de anotaciones tienen sentido
@RequiresApi(Build.VERSION_CODES.N_MR1)
public void hello() { // codes that call system apis introduced in android N_MR1}
Cuando se anota un método con esto, cada vez que llama a ese método, recibe una bonita advertencia roja de que esta llamada requiere una versión de la API que sea superior a su versión de la API mínima, pero no le impide compilar y construir su apk, simplemente fallará en versiones inferiores de Android cuando lo probé.
@TargetApi
Esto no ayuda en absoluto, suprime las advertencias de llamar a nuevas apis en su método, pero cuando llama a este método desde otro lugar, no hay ninguna advertencia de lint, y aún puede construir e instalar su apk solo para cumplir con un crash cuando se llama a ese método.