I was having a similar difficulty. I wanted enemies to respawn at a level's checkpoint but not collectables like coins. Here's my solution for anyone interested:
When the an enemy is killed instead of destroying the instance, do
instance_deactivate_object(this_enemy);
I have it inside of an enemy state "DEATH" which does a few more things like the death animation etc.
Then when the player dies I have him reappear at the checkpoint coordinates and do:
instance_activate_all();
And all the enemies respawn and my collectables are gone.
You can switch on separate layers as well. Another situation I ran into was I wanted to be able to go into another room that is actually part of the current level I'm in and still have the items be gone. All I had to do was change the persistence of the room using,
room_set_persistent( ind, val );
I make all rooms persistent within a level until level exit is reached at which point all rooms in the level become non-persistent. That way I can have a multiple rooms connected to each other to form a level without having to have a million objects.