Its great to see another individual taking an opportunity on learning more about Android development.
I would recommend you getting a new laptop or desktop as some developing programs are RAM hungry. Though they should still work.
Building ROMs from source - To be able to build ROMs from source you'll need to learn allot about Android, ive never attempted this so I can't help you here. But don't worry, there are plenty of guides here on xda that'll get you set up with a Linux distro and a workstation that will lead you to compile your first ROM from source. Just use the search function.
Modifying ROMs, ROMs can be modified using windows so you wouldn't need a Linux Distro to be able to achieve this. Again there are plenty of guides and useful resources that can get out started, just use the search function.
Building apps from source - Building apps isn't all that hard to be able to achieve this. You will need to set up a environment. You can do so by going to the android developer site and you can start by downloading their SDK Pack. This contains vital files that will get you started. Also includes Eclipse studio (Application Creator).
Another info on android app development is that its based on Java. So I suggest you learn Java coding as others won't be as helpful. But no need to stress over this, Java is straight forward and its easy to pick up.
Modifying apps, you can achieve this by using apk decompilers (this can be done on Linux and windows) you can decompile the app and make changes within the work folder.
You can use the source code of an app (contains functions and commands) to build an app on eclipse.
The apk itself just contains the layout and looks. The src contains vital info for the app to run right.
I would have provided links but I am using my device. If you have any other questions, don't hesitate to ask.