Actually absorb is occurs before the damage is taken, and absorb takes part of the damage and converts it to health.
For example if you take 1000 fire damage and have 40% fire absorb:
100 fire damage – 40% fire absorb = 600 fire damage
40% fire absorb = 400 life
The problem is if you have max life when take the hit, the damage absorbed will “overflow” and you end up just losing 600 hit points.
If your current life is (max life-400) then you absorb 400 points and lose 600, ending up “losing” only 200 health points. In this case absorb works at double rate, ending up reducing damage twice the amount of absorb.
If you add 50% fire resist then the damage = 500 ; 40% absorb = 200; damage reduced by absorb = 300 ; damage taken = 300 -200 = 100
In the case of % absorb, a mid % resist necessary to fully exploit the benefits. On the other hand , + xx absorb is best used when you have a high % resist.