The stack has a limit yes, but if you just use a few objects, then there won't be a problem and as soon as you go a bit bigger, then you'll probably need to use some dynamic allocations anyways (e.g. reading required objects from a file at runtime).
sf::Texture doesn't get stored on the stack, but it's just a handle for the texture that actually lives on the GPU RAM and sf::Sprite is a very light object, so you will be able to construct a lot of them until you hit the stack size limit.
Besides all that, if you use a good structure, you'll be using STL containers, which allocate their content on the heap, thus if you allocate a std::vector<sf::Sprite> nearly no stack memory is wasted. Also if you declare them as normal class members and then maybe later on construct that class dynamically, all the "stack" objects will infact get allocated on the heap.
Thus as The Terminator said, try to avoid the heap and if you do use it, make sure you use smart pointers instead of raw pointers.