Battlefield 2 is a highly static game, that is the reason why many many materials will never behave as you'd expect it to do, or as you are growing acustomed to by playing modern (current) games.
In a static environment, it is confusing and upright annoying for a player to sometimes be in cover, and sometimes take damage from bullets passing through materials which he believes will protect him.
However, for game play's sake, and for the purpose of actually making guns like heavy machine guns be more useful, I also feel that we should allow their bullets to pass through certain materials, like thin wooden plates and fences. This is on a to-do list for review, we'll see what happens if me or anyone else gets the time to do this.
For explosions, that's another issue and I'll let Kev4000 handle that. To some degree I agree that a 250kg bomb that lands on the roof of a house should kill anyone inside, on the other hand, since we have a static environment, Im uncertain about how that will be experienced by the guy inside.
Personally, I much rather have consistent and clearly communicated laws of the world, even if they're "unrealistic" than to have semi-consistent and poorly communicated laws, even if they in some instances could be perceived as slightly more "realistic".
We will see what we do in the future.