There are different approaches. You could add an instance variable on the bullet to track where its spawned from so in your spawn bullet event directly under the spawn action you can set the bullet.var to tower.UID (the tower picked will be the one that is spawning the bullet)
Now that the bullet has the UID of the spawning tower attached, on the collision with tower event you can add another condition bullet.var does not equal tower.UID, meaning the bullet will not be destroyed by the tower spawning it.
As for being destroyed by the spawning tower later there are couple of ways. I used bouncing bullets in my game and I used another variable that tracks the number of bounces, so again on that same collision with tower event, with an action you can add 1 to this new numBounces var. Then you could add an event like if bounce > 0 set bullet.var (the UID check) to 9999 means it will now be destroyed when colliding with the spawning tower.
There may be a simple way to do this with parent/child hierarchy but I've not used that functionality.