There are two different concepts here: resolution and scale.
The resolution of a texture is the number of pixels. For example a 64x64 texture. You might only use a small region of a texture, like a 32x32 tile from a large texture, its the resolution of the region (whole texture or smaller part of a texture) that matters.
Scale is a multiplier, it's not a size on its own. The on-screen size of a sprite is texture resolution multiplied by scale.
A 64x64 texture on a sprite with scale of 1,1 will be 64x64 pixels.
A 64x64 texture on a sprite with scale of 2,2 will be 128x128 pixels.
So if you have two sprites with different resolutions but the same scale, they will appear different sizes on screen.
The origin is set using pixels (before scaling). For a sprite with a 64x64 texture, regardless of scale, you'd set the origin to 32,32 (the centre), not 0.5,0.5.
If you want to scale something to a specific size, you need to calculate the scale factor. For example, to make a 1024x768 texture stretch to 1920x1080 (for a background, lets say) you'd have a scale of (1920.0/1024.0), (1080.0/768.0). That would be a scale of 1.875,1.40625.
For example here's some code from an old sample I made a few years ago to scale a background sprite to fill the window:
sf::Vector2u resolution = m_backgroundSprite->getTexture()->getSize();
m_backgroundSprite->setScale(float(m_window.getSize().x) / resolution.x, float(m_window.getSize().y) / resolution.y);