Here is an excerpt from the CDT page describing their parsing and indexing(CDT/designs/Overview of Parsing). It gives a pretty good description of what the differences are and where the fast indexer can fail:
Parsing and binding resolution is a
slow process, this is a problem
because the user expects code editing
features such as content assist to be
fast. For this reason CDT stores
binding information in an on-disk
cache called “the index” or “the PDOM”
(Persisted Document Object Model) in
order to be able to provide features
that respond quickly to user requests.
Building the index involves parsing
all the code in a project, resolving
all the bindings and writing those
bindings to the index. The index is
then incrementally updated every time
the user edits a file.
Older versions of CDT support three
different indexing modes, fast
indexing, full indexing and no
indexing. The default setting being
the fast indexer because indexing a
large project can be a time consuming
process. The difference between the
fast and full indexers is that the
fast indexer will skip header files
that have already been parsed once,
while the full indexer will always
re-parse a header file every time it
is included. However it is important
to understand that the full indexer,
despite its name, is still not fully
accurate.
When a header file is included in a
source file it is subject to any
macros that have been defined at that
point. Some library headers use macros
in conjunction with preprocessor
conditionals (#ifdefs) to partially
include a header file. Sometimes such
a header file is included more than
once in a project, if the macros that
the header depends on are different
each time the header is included then
different parts of the header may be
included in different source files.
Neither indexer will be accurate in
this scenario because it will only
index the header the first time it is
encountered.
The Full indexer will re-parse headers
it has already encountered, but it
will not re-index them. Therefore
source files that include a header may
be parsed more accurately, but the
header itself will only be indexed the
one time. The full indexer is much
slower than the fast indexer because
of the extra parsing it does, but it
is only marginally more accurate. For
this reason the Full indexer is not
recommended and has been removed from
the current version of CDT.
Each project has a single PDOM
associated with it. The PDOM is stored
on disk as a flat binary file. The
indexer will only index headers that
are included by source files, so if
there is a .h file in the project that
is not being included by any .c or
.cpp file, then normally it won’t get
indexed. However there is a preference
setting for indexing all files in the
project.