Each sf::Sprite is one vertex array and requires a draw call. So 10,000 sprites are 10,000 vertex arrays and require 10,000 draw calls. That's the reason why it's slow.
But if you create a single vertex array that contains the contents of your 10,000 sprites (which is possible only under certain conditions, don't imagine that vertex arrays are the magic solution to everything), then you end up with a single draw call for your 10,000 quads and it's very fast.
Basically, the overall performance can be measured to the number of draw calls. The number of primitives drawn by each call doesn't make a significant difference (unless there are millions, of course). So, a single vertex array = maximum performances.
sf::Points is not another class, it's just an attribute of vertex arrays that tells the graphics card how to connect/interpret the vertices of your vertex array: either as individual points, as lines, as triangles or as quads.