>>106496316
>>106497876
Once you've configured your router to forward traffic on the right port(s) and created a user account or similar for your friend, file transfers are actually simple and there are many solutions for it, including as mentioned by previous posters FTP, SFTP and scp, as well as other solutions like rsync. Most of these do again have the problem that exposing too much or granting too much access is still problematic: where should your friend be able to write? Should your friend be able to overwrite existing files? Can your friend delete files? Depending on the solution you used you'd also need to configure things to prevent your friend from browsing other folders on your PC, and maybe you don't want him to be able to download things. But other than locking it down sufficiently it's pretty simple...

...on Linux. Many of these tools are either pre-installed on most distros or one command away from being installed. Windows to my knowledge does not have any such easy file transfer utilities (it allows easy SMB sharing, but that's local network only and you need to jump through MANY hoops to make it work remotely) so you're essentially out of luck there. It also needs to be noted that security on Windows is always iffy in general and I, personally, don't expose Windows machines to the internet any more than is really necessary. (I did have a Windows server once, 15 years ago. It got infected by a virus without any interaction on my side, and ever since then all my servers have been Linux.)