1)
Your enemy class should store the movement direction. Set it only once, when you spawn the enemy in the middle of the screen. Then use this static movement direction to move the enemy without following the player.
Hint: store the movement direction as a unit vector so you can scale the speed easily. (multiply with a scalar)
2)
Yes, a vector is a good choice, simply push them when spawning, and remove them when you want to destroy them. This is the simplest approach and will get you far (> 1000 enemies shouldn't be a problem).
(The next part is only important if you need a lot enemies and spawn/despawn them rapidly, 99% this is not important for smaller games)
If you need more and run into performance troubles, you could add a "isAlive" flag, and reuse dead enemies when spawning new ones. This will save you realloc(s) and copying data inside the vector (erase) when your enemy count wont increase anymore.
When your enemies die in the same order as they spawn and you have a maximum enemy count, a ring buffer is also an option.
AlexAUT