Is there a way to reduce the light of a sprite?
Set its color to gray.
sf::Uint8 light = ...; // 255 = initial brightness, 0 = black
sprite.setColor(sf::Color(light, light, light));
I also have another question: how could I make a sprite black n white?
There's no built-in function for that, you must apply a black-and-white algorithm manually to all the pixels of the texture. Or do it in a fragment shader, if you want to apply this effect at runtime.