Tal vez sea tan simple que hasta me equivoque al explicarlo o lo líe demasiado...

Para empezar, diremos qeu hay cuatro grupos sanguíneos más frecuentes: A (que puede ser homocigoto AA vs heterocigoto A0), B (homocigoto BB vs heterocigoto B0), AB y 0 (homocigoto 00).
El porqué de llamarlos A y B en lugar de AA/A0 y BB/B0, por ejemplo, se debe a que el 0 es recesivo, así qeu un A0 se comporta como AA (por eso decimos A) y B0 se comporta como BB (por eso decimos B), pues A y B son dominantes sobre 0 y co-dominantes entre sí, de ahí qeu exista el grupo AB.
El grupo 0 no expresa (lo que podemos llamar) antígenos A ni B, de hecho, al principio se llamó 0 por eso mismo (con matices, claro, hay otros muchos antígenos aunque menos inmunogénicos). Por eso un 0 puede donar sangre a un A o un B, porque esta "inexpresión" antigénica hará que las células que expresan A y/o B no reconozcan un antígeno extraño al que atacar (o del qeu defenderse) en el grupo 0, cosa que sí pasaría si a un A le metiésemos sangre de un B, y viceversa. Por ello el 0 le puede donar a un A, B y AB (como bien apuntas, hay que tener también en cuenta el Rh)
Un A puede donar sangre a un AB porque el AB expresa antígenos A y B; por tanto, no reconocerá al A como extraño. En cambio, el AB como expresa A+B, si donase sangre a un A (AA o A0, como quieras), éste reconocería como extraño al antígeno B (ya qeu no lo expresa) y atacaría a esos hematíes, provocando una hemólisis (destrucción de los hematíes).
Por este mismo motivo, el 0, al no expreasr ni A ni B, no puede recibir sangre de un A, un B o un AB; sólo puede recibir sangre de un 0, de lo contrario, volvemos a lo que hemos comentado de la hemólisis.
Y como bien dices, no podemos olvidarnos del RH (que tiene ese nombre por el "mono" RHhodesius). Por tanto, un RH- puede donar sangre a un RH+, ya que no expresa el antígeno RH (de ahí que se llame negativo) y por tanto, el receptor, no atacará a esas células. En cambio, un RH+ no puede donar sangre a un RH-, ya que el (+) expresa el antígeno, y el donante (-) no, con lo cual lo reconocería como extraño y lo atacaría.
Por tanto y como conlcusión final: un 0- puede donar sangre a todos pero solo puede recibir sangre de otro 0-.
Pero ¡ojo! Hay otros tipos de grupos sanguíneos, aunque menos frecuentes.
PD: Hay qeu ver, con lo bonita que es la Inmunología cuando se entiende...