(Red is moved back from Yellow by 1 unit, Yellow is moved left from Yellow by 1 unit and facing it. In other words, Red “sees” the front of Yellow, Blue sees the left side of Yellow).
I think you should set all positions as you wish without parenting and then use wrtReparentTo() instead of reparentTo(). Or use setPos(render, world_pos), setHpr(render, world_hpr).
If I understand the question.