If you are batching already transformed objects, you can just apply their transforms to the points. Something like:
sf::Vector2f firstPoint{ object.getTransform().transformPoint(object.getPoint(0u)) };
I can't remember if get point would get the global or local position. If it's local, this transformation is required. If it's global, you can just get them and the transformation will already be applied.
Each sf::Vertex has a colour attribute. Just colour each of the vertices of each primitive with the same colour. e.g. quads: all four vertices.
Flipping can be done by swapping vertices or, if it's a textured quad, swapping the texture co-ordinates.
Rotating can be done automatically as mentioned above. However, if need to do manually, you can either calculate the maths directly or use an sf::Transform (https://www.sfml-dev.org/documentation/2.5.1/classsf_1_1Transform.php).