Hi Erick,
Yes, your understanding is correct, this is how it works: The OCROM has the ROM code loaded. This code is the basic startup code, basically, it goes and checks the configuration of the boot pins (LDC_DATA[5:0], please see chapter 12 of reference manual), and determines what the boot source is (could be NAND, SD, MMC, or others). The ROM code does other configurations too but that is transparent for you.
Once the ROM code has determined the boot source, for example, imagine the boot pins are configured to boot from NAND, then the i.MX goes and checks the NAND, your bootloader and operating system have to be loaded here so the i.MX has SW to work with. When it starts executing what is in your NAND, a copy of the first 4K of data to the DDR takes place. These first 4K are executed from the DDR, but this is not that important either. The rest of your code is executed directly from NAND (or the boot source you selected). This is the way your operating system is executed, then your application starts.
Now, about the OCRAM, this internal memory is available for you to use for any purpose you want. Normally, I use it to store debug code there, so I make my debug program, connect throught JTAG and tell the i.MX that it has to execute the code in the RAM, that's how I test and debug the application. You can use it for any purpose, but take into account that it is RAM, so it will be cleared as soon as power goes off.
I hope this helps!
Best regards.
Jorge.