P2P or Peer-to-Peer is a very hard type of program to create, mostly because of its very structure. Most internet applications are Client-Server this is because a lot of headaches are solved just by having a fixed server you know you can connect to. At the end of the day, that's more or less all Napster did, it just indexed files and said who is currently hosting them.
The other problem with creating P2P software, is that developing it on your own, you will have very few peers to test with, even if you do create a bunch of virtual computers. You will find it hard to test it scaled to 00's of users.
First steps though, you will need to learn to program in a suitable language, something like C++ or C# maybe just make it as a console application to learn the technology.
Next, learn how to work with files. Not much use if you can't save stuff is it.
Networking next. Start with a client-server set up just to get to grips with transferring files. Make a server app that gives the files and a client app that downloads it. Then start to scale it to one server giving files to lots of clients.
Final step is to merge the client and server so that as the peer downloads more of the file, it can start to be a server and let other clients download from it.
If you want, now you can think about a GUI.