Does the binary go in ram?
On most systems: yes. Though on many today systems there is an additional abstraction layer between the physical RAM and the RAM your processor "believes it has" - it is called virtual memory, as the other answer already pointed out. So if for example your machine has 32MB of physical RAM, but 64MB of virtual memory, as soon as the running programs need more than 32MB in total, the operating system tries to "swap out" least recently used areas of the physical memory to disk, and loads memory which needs to be accessed immediately from disk again into physical memory. For your program (including other programs on the machine) it looks like as if there are 64MB of physical ram, besides the fact that things become a hell lot slower when crossing the 32MB boundary often.
Does that mean if my program is 2mb and ram is 32mb I can only address 30mb?
Assumed your program has a code size of 2MB, and your system has only 32MB of memory (either physical with no virtual mem, or 32MB of virtual memory), this leaves 30MB for anything else - working space for your own program, as well as code and working memory for any other processes or programs running at the same time.
in general what document would I look at to check this information
The amount of physical RAM is typically documented in your systems hardware documentation (and also in advertisement catalogues, but I would actually not recommend to take these as a serious reference). The amount of virtual RAM can typically be parametrized in the system's settings. And if you want to know how much RAM your program can really use for itself, you have to inspect a running system with some kind of systems monitor and see how much physical or virtual memory is still free when there are no other running processes besides the ones of the operating system.