For your first question, you could have a look at The Elements of Computing Systems, by Nisan and Schocken. It covers the workings of a computer from logic gates, via the CPU to programming languages and the OS. 

The website of the book is [here][1]; via the 'Study Plan' link you can even find most of the book online, and some presentations based on it - those could be useful to get a quick idea of whether the book is right for you.

 [1]: https://web.archive.org/web/20191109093744/http://www1.idc.ac.il:80/tecs/