I have learned SFML only by the online tutorials (and maybe some specific posts on the forum). Concerning general game programming before SFML, I had few experience with SDL, but not really more than the most basic things: How to write the main loop, how to draw things etc. I have never read a book about game programming, only some C++ books. Some principles like the separation of logics and graphics or variable frame rates were told me in forums.
Up to now, I haven't touched all areas of game programming yet, I plan to take a in-depth look at 3D programming, multithreading and maybe AI in the future. But my knowledge seemed to suffice for a 2D jump'n'run, a 2D space shooter and few other games with SFML, so I think the basic stuff can be learned fast enough by doing. As far as I remember, I didn't lookup much more than C++ specific stuff and a collision detection tutorial for the jump'n'run.
What is very important in my opinion, is a solid fundament of C++ knowledge. It is possible to program good games without it, but the code tends to be inefficient, error-prone and unmaintainable. In fact, this is a mistake many people do, including me some years ago. And even if you have good C++ knowledge, there are a lot of design hints and pitfalls that aren't covered in beginner books. You could take a look at "Effective C++" or "Exceptional C++", this will certainly improve the way you write code, also for game programming.