The way I learn programming is to figure out something I want to do first; often a difficult step. Come up with some project you want to make.
From that, you can come up with a fairly clear list of what you need to know, and then research that.
-- things like display graphics
Use a library for this. If you wanted to make a game, for instance, you want to look up either a suitable sprite library or some sort of openGL or directX library. Once installed, these will provide functions to do graphics.
You could learn how to do it from a lower level instead, but it frankly isn't worth the effort.
-- save/load files
http://www.google.com.au/search?q=open+a+file+in+c
http://www.thinkage.ca/english/gcos/expl/c/lib/fopen.html
-- send/receive data using (serial) ports
as posted earlier, on unix open the file /dev/ttyS0 and then read/write to it.