One of the best tips for using vim that I have learned so far has been that one can press Ctrl+C or Ctrl+[ instead of the Es
Extremely late answer, but I just had the same question and found one practical example which helps explain the difference, so why not.
If you select a visual block and then change it with c or append something to the end of it with A, if you then exit with <Esc>, the same change will happen on all the lines of the visual block (which is really useful! See :help v_b_A); if you exit with <C-c>, this doesn't happen, only one line gets the change. There are probably other similar things I didn't realize I was missing with <C-c>...
As it turns out, <C-[> is exactly identical to Esc, they are the same character. So no need to wonder about any difference there. :)
According to Vim's documentation, Ctrl+C does not check for abbreviations and does not trigger the InsertLeave autocommand event while Ctrl+[ does.
One option is to use the following to remap Ctrl+C
inoremap <C-c> <Esc><Esc>