Minecraft wiki entry for Explosion, associated text: The maximum blast radius (assuming no block absorption) is = 10.4 (charged creepers), 6.9 (TNT), 5.2 (creepers), 1.7 (fireballs). For example, a TNT explosion can destroy a torch 7 blocks away. However, how many blocks an explosion can destroy is non-deterministic and also dependent on the specific location of the explosion.
The minimum block resistance required to absorb maximum blast force of an explosion happening in nearby air = ((1.3 × power − attenuation steps × step length × 0.75)/step length − 0.3). To not be destroyed, a block has to absorb all blast force at the first checkpoint in it.
The attenuation steps is subject to collision restrictions. For explosion in air, there is at least one attenuation step. TNT and creeper explosions are always 0.49 and 0.5 blocks away from nearest block (2 attenuation steps), but fireball explosions can happen anywhere (1 attenuation step).
Thus, the block resistances are 24.2 (charged creepers), 15.534 (TNT), 11.2 (creepers), 3.284 (fireballs).
So water, lava (the stationary block), obsidian, and bedrock are always indestructible, and fences and less blast-resistant blocks can be destroyed by fireballs. These are theoretical values, and in reality less resistant blocks are not always destroyed; there is no such mechanic.