So, first of all I just want to explain the difference between debug mode and release mode.
If you have a class called "Player" and that class has a member value called jumpHeight and you never initialize that value, the debug compiler might say "Okay well I was never told what jumpHeight should be. I'll make it 1." And your code runs fine.
Compiling in release mode, this doesn't happen. Instead the compiler says "I was never told what jumpHeight should be so I'm not going to do anything." This can cause your code to break or act completely different at runtime.
If you don't really plan on "releasing" your game, it doesn't really matter. Except that when you compile in debug, your program generally runs slower, and if you set up SFML correctly, the compiler will look for the debug versions of the libraries (which, I assume are bigger but I don't actually know that).
So if you just want to show it to your friends it's not a big deal.
That said, here's what you will need to give them. (I recommend copying these things instead of moving them)
The .exe file produced by your compiler.
All of the sfml .dll files (Assuming you didn't link the libraries statically.)
All of the .dll files of any other libraries you used (again, assuming you linked dynamically, not statically)
All folders containing all images, sounds, fonts, etc. They should be in the same relative position to your .exe file as they were in your project folder.
Zip em up!
If you give this to your friend and they unzip the files and double click the .exe file, it should work. If it complains about a missing .dll file, then you probably missed one. And, if you set up your code correctly, it should complain about missing files like images and fonts (SFML will throw errors for missing files in any case).
It's actually not too complicated. You seem like you think you're overthinking it. You're not!