How can I edit open source code and building the application?

I would like to to edit open source codes and building as applications. I’m wishing to edit entire operating system of linux in future. But unfortunately I know only a little bit of C++, and I don’t know how to building applications from source codes. So i wish to move step by step from a simple software. Where can I download open simple source codes? and How can i compiling it as applications?

When buying new hardware for a linux system, should I only pick hardware that has linux drivers?

I am new to linux. I want to construct a new computer that will operate linux. Should I only choose hardware (like a TV tuner card or a sound card) for which there are already linux drivers or are there always workarounds for getting every piece of hardware working on linux even if there are no drivers? Are these workarounds easy to implement or will I spend a lot of time and effort trying to get the hardware to work?