The first problem: When 'Pink' overlaps with 'Pink' it destroys 'Pink'. So it destroys both of them.
You need to specify in the condition by saying: Pink: Pick Top Instance, then it will destroy the recently created one.
Yes you can instead just randomly relocate it, instead of destroying.
I assume you'd want them to be created on a grid-like pattern, instead of randomly scattered? You can make use of the modulo operator % to achieve that. for example:
PinkSquare
Set position: random(192,896) % 64, random(192,896) % 64
----
Second question: So you're trying to make only Tetris-type shapes? In that case, you would 'Pick' a pink square (let's say: Top instance), then 'Spawn' pink. (This will create another Pink on top of it), then just move it Either x by 64 (or -64) or y by 64 (or -64). You can use the choose expression for that. If the squares are symmetrical and square, then this might work nicely:
PinkSquare
Rotate clock-wise: choose(90,-90)
PinkSquare
Move forward: choose(64,-64)
But make sure to remove the 'destroy' on overlapping, that can cause more problems later, especially when you'll want to actually check for overlapping two different tetris blocks, etc. They'll just destroy.