I didn't ask for code. I asked for theoretical solutions. But no one responded to that either.
I will respond to your questions without code, but before I do you need to understand what you are asking is basic C++ knowledge. That is why I highly recommend you pickup a good C++ book and get the bases down before you try game programming. Trying to learn C++ and game programming at the same time will cause you to learn questionable coding habits.
1) All sprites are generated randomly but they all appear at once. They should appear one after the other with a fixed time interval. How do I set that condition?
There is no "condition" you can just set, this is where knowledge about computer programming comes in. What you must do is track the total elapsed time from every frame and when it exceeds your time interval subtract your time interval from the total elapsed time and spawn a new sprite.
2) The maximum number of sprites generated is the maximum size of the array. Is there any other method where indefinite number of enemies are generated until the player dies or the game is stopped?
To start off
std::vector<t> is not a fixed array. You can put as many elements into it as you want (until you run out of memory). So just keep spawning (as I explained above) until you wish to stop.
3) I've set bounding box collisions and collision conditions for the enemy sprites in a similar fashion using vector arrays, but I'm pretty sure that's wrong because it doesn't work. They overlap each other, and do nothing when they collide with the player. How do I randomly generate them such that they don't overlap each other and they collide with the player?
Do not use another vector for bounding boxes. There is nothing magical that will update your second vector bounding boxes with what you applied to your sprite. Just your existing vector of of enemies and call
sf::Sprite.getGlobalBounds() to get the bounding box of the sprite. As for collisions use
sf::Rect.intersects(xxx) to determine if bounding boxes intersect.