Internal structure of LCD controller
What is the difference between CGRAM and CGROM.


One is read/write, the other read-only.

The CGROM contains the glyphs that are fixedly "burned" into the device, the CGRAM contains the characters that you loaded yourself. (for example, all latin letters are probably stored in the CGROM, so that your controller knows what to draw when you send an x byte; if you want to draw a flower as character, you'll have to load a flower picture into CGRAM).


  What is DDRAM for?


Figure says "Display Data RAM", ie. probably simply the frame buffer your pixels get written to.


  Where are the customised characters stored?


CGRAM


  What does it happen when I send an instruction vs a data stream on DB0-DB7 pins?


The instruction decoder state machine notices an instruction to be decoded, does that, and modifies the state of your controller accordingly.

It's in essence a small, very specific CPU integrated there.