Is it possible to have scenery such as buildings, cars, windows etc. be destructable? For instance if I were to shoot a bazooka at a wall could I just shoot out that chunk of wall and how would i do that?
In addition to above try this tutorial:
A simple way of achieving this is having objects replace themselves with damage models after obtaining damage. That way you create different models for different "rubble" models of the same asset. Simply remove the original part and swap in a "rubble" part instead.
For your bazooka to crack that one piece of the wall requires the wall to be placed segmented.
There also are algorithms to procedurally break objects but those can be hard to get right. I think I saw a demo on a unity project using this but I don't remember which one. Anyhow, I think the best visual appeal for the time spent implementing the feature come from simple damage models. You can create a range of damage models if you want it to be other than just "fixed" and "b0rked". To have some variance you could have "random sets" of different representations of that model, so not every part of the wall would look the same after its blown up.
A simple script could have several children with different models, and show one model at a time depending on the damage level. So you could simply have an array of transforms on which game object you de/activate recursively.
To add special effects, you can use SendMessage when transitioning from one state to another, to call that models "OnExplosion" effect. Then you can separate the actual explosion effect from the rest of the code to have it flexible.