Just check the the bullet object. There's a collision with block event there that destroys if it collides with a block, right? Try this in that event:
if (other.object_index==invisibleBlock || other.object_index==fakeBlock) {
if (other.visible) instance_destroy();
} else instance_destroy();
Assuming all those blocks have block as their parent, then if the block is an invisibleBlock or fakeBlock, only destroy if visible. Otherwise, just destroy.
Change the names if they're not the same, and if the parents aren't block, just make a new new collision event for them. Should work just fine!