Celebrim
Legend
The other solution is to dispense with immunities and give everything a number. Anything can be overcome with a big enough number. This how the HERO system does it. This can result in confusion as to how much one needs to be 'immune'. Immunity isn't a thing in itself, it's dependent on the rest of the world. Everything is relative. So to properly build a PC, a player actually needs to have a good understanding of the whole world.
This is the path I'm trying to take. I'm trying to write all of the immunities out of the game and replace them with numbers. For example, Mindblack gives you a bonus vs. mental attacks and additionally causes you to not fail a save on a 1. Death ward works the same. So does Freedom of Action. Creature that previously have immunity tend to have very high levels of resistance. I'm striving toward a situation where a powerful fire elementalist could with the right feats actually burn a fire elemental.
I'm also working toward scaling down DC's so that immunities are nice, but not as essential as stock 3.X. I'm trying to emulate the experience of 1e where, as you leveled up, you could be more and more confident of passing a saving throw. My experience of stock 3.X is almost the reverse - as you got higher level, the less likely it was you'd pass a saving throw because DC's ramped up faster than saving throw bonuses. For example, spells no longer add their level to the DC of the saving throw. Monster HD no longer adds to the DC of the saving throw either - its enough in my opinion that the abilities that the attack is based on are already going up.
Of course, none of this is rigorously play tested (well, certainly not at the high levels where it really matters), but on paper it certainly looks like the math works better.
As far as 'understanding the world to build the character goes', I'm not sure I quite follow that argument except how it pertains to HERO system where starting characters can choose to have 'immunity'. It seems to me that Fire Resistance 20 is always less than Fire Resistance 40. If it was really necessary to do the math, I think a good rule of thumb is that spell effects tend not to do much more than 1d8 damage per character level. So, from that its pretty obvious to see that 5 energy resistance per expected challenge rating is quite high resistance, and anything much more than that is going to be effective immunity. After that, it only remains to ask what the limit of natural fire is in terms of damage, which is probably something like 'In direct contact with molten lava or (in absence of rock) heat which would melt metal and stone'. A creature which has high enough resistance to withstand that would be percieved as 'immune to fire'.
As far as saving throws go, I'm working from the theory that '+20 to saves/doesn't fail on a 1' is 'hard immunity' in as much that under my revisions DCs much above 20 are very rare and that at no time does a balanced encounter require a save more than 20 higher than the anticipated base save bonus to succeed. I'm actually unlikely to translate immunities like that into 'hard immunities' though because its almost as bad as what it replaces, and my tendancy is to move more to 'soft immunities' which are '+10 to saves/doesn't fail on a 1'. The obvious justification here is that in an average balanced encounter, the player generally shouldn't have to throw much higher than a 10 to succeed at something. Thus, a 'soft immunity' wouldn't represent absolute immunity, but rather near or complete immunity to typical hazards faced at the character's level, and signficant resistance even to hazards somewhat above typical for the characters level. Because the anticipation under my revisions is that save bonuses will go up faster than DC's, as the players increase in level 'soft immunities' would tend to act more and more like 'hard immunities'.
One of the theories I'm hoping to prove about my rules revisions as I continue to play test them is that they improve the balance between non-casters and casters and reduce the necessity of reliance on items (especially for non-casters). Of course, this isn't the entire picture as I've made other revisions as well (and some are still being refined), but the math seems to work at first blush.