The best component depends mainly on what kind of data you want to share:
Strings or a stringlist: Use TPBStringList or TPBShareMemIni (propably the easiest components to use).
Images (a list of bitmaps): Use TPBShareImages.
Any other list including a list of mixed types: Use TPBShareMulti.
For all other kind of data (Variable, Record, Object): Use TPBShareSingle.
Although you can convert most types to strings, TPBStringList and TPBShareMemIni generally performs
poorer than TPBShareSingle and TPBShareMulti. Converting to/from strings takes time and conversion errors
might occur (Delphi conversion routines are not perfect - for instance a cardinal value above MAXINT
might give problems).
Another issue is memory-use. TPBStringList and TPBShareMemIni keep the whole list in local memory and
will always update the whole list. TPBShareMulti on the other hand has only one element in local memory.
My personal favorite is TPBShareSingle, because it has great performance and is very universal. Look
at BasicDemo to learn how to write the OnDoReadAll and OnWriteAll event-handlers (the components will
raise an error - if you use a wrong syntax - to help you get the right syntax).