The question is why do we need sf::Window when sf::RenderWindow is much more powerfull and have everything that sf::Window have + more?
If you don't understand what you just said then there is no point explaining good software development practices to you. Sometimes you don't want to use classes just because they can do more things than another class...
but if you want to use opengl in render window there will be hassle with context switching and what-not
Since sf::RenderWindow inherits from sf::Window and the only virtual function overrides are the ones that set up the RenderTarget and View, from a functionality point-of-view, sf::RenderWindow is a superset of sf::Window. As such this hassle can not exist, otherwise it would be caused by sf::Window as well. In fact because these classes support polymorphism, accessing the sf::RenderWindow by its sf::Window interface is perfectly valid.
The only TRUE difference if you only intend on using OpenGL to draw, is that sf::RenderWindow takes up more memory and requires linking in sfml-graphics as well. But since the op seems not to care about memory or linker differences, there is for the op visually no difference.