Argh, I knew I would miss the most interesting discussion
BlendMode, Transform and View should always be handled by value (copy), whereas Texture and Shader should be handled by reference. To make it clear, the first three will be passed as const references and the last two will always be passed as const pointer to functions that use them.
The pointers are a good way to make clear that the arguments are referenced after the call and no temporaries are passed, but you should be careful that you don't mix two code styles. Until now, pointers in SFML interfaces imply the possibility of being NULL.
Now we can focus on other questions, such as: should high-level objects have their own transform, and keep the same functions as now (Set/Get Position/Rotation/Scale/Origin)? If so, how would one make a sprite relative to a parent object, ie. multiply its own transform by it before passing it to the render target?
Would the high-level objects also provide set/get functions for the transform itself? Then one could do this:
sf::Sprite sprite;
sf::Transform tf = sprite.GetTransform();
sprite.SetTransform(tf * other);
In principle, the interface is unnecessarily big with SetPosition() etc., but the above code is too unconvenient to be the standard way of positioning objects. Another option are free functions, even if you don't seem to like them too much in SFML
sf::SetPosition(sprite, pos);
// semantically equivalent to the following, but optimizations are possible:
sf::Transform tf = sprite.GetTransform();
tf.SetTranslation(pos);
sprite.SetTransform(tf);
The big advantage is, you can write this function as a template and it works with all positionable entities. Plus, it can be overloaded for other classes, even ones not part of SFML. Member functions either need a common base class like sf::Drawable, or produce a huge code duplication.
By the way, I have read the thread and have tried to reconstruct the proposals and their implications. But I consider this topic quite complex and I fear that some consequences are only visible when experimenting around with them. So I would appreciate if you left the users some time to test the new API after you have a first working draft, instead of releasing SFML 2 immediately