Also try to think ahead on what your role in this will be, meaning, what do you want to achieve eventually and work with that goal in mind (a game programmer or a tech programmer at a AAA studio, an indie doing everything himself etc.). With this focus it's easier to make decisions on what you really need to do yourself vs reusing existing stuff.
This is a tricky one. From my experience (AAA) game studios don't want "jack of all trade" employees. My advice would to be think about you really want and where your talent lies, then shine on that specific topic, make it jump of the page (could be gameplay programming, tech programming, ai, game design, production, audio fx, music, shaders, art etc)?
For the other things you need in your portfolio it's perfectly fine to "borrow" other stuff, as long as it's legal