Difference between FB and FC:
The difference between FB and FC is that FB has a memory and can remember things while FC does not have any memory. That's why when you create an FB it asks you to link an instance DB with it.
Difference between a global data block and an instance data block:
A global data block is a block that all of the other programming blocks (such as OBs, FBs, FCs) can read and write the data that is within it. That means all of the programming blocks can read and write into a global DB.
An instance data block, however, is a data block that is assigned to a specific FB and contains "local" data. So the data in this data block or DB is only acceptable to that specific FB.