getLocalBounds() returns the bounds without any transformation applied, where as getGlobalBounds() returns the bounding box with the transformation applied. E.g. if you rotate a sprite, the local bounds won't change, but the global bounds now is a axis aligned bounding box of the sprite.
Further more the position is usually at the top left corner of the sprite, unless you defined a different origin, all the transformation will happen around this corner.
Then there's the whole
sf::View thing, which can be quite unintuitive in the beginning, that's why I've created a
tutorial, which should give you some intuition on the topic.
There are also other topics surrounding your question, so feel free to search a bit further.