Depending on which CGAL kernel is used, Type1 and Type2 can be of different types.
With the basic 2D and 3D Kernel (see Chapter 7)
#include <CGAL/intersections.h>
The types Type1 and Type2 can be any of the following:
Also, Type1 and Type2 can be both of type
In threedimensional space, Type1 can be Plane_3<Kernel> or Triangle_3<Kernel> and Type2 any of
Also, Type1 and Type2 can be respectively of types
With the 2D Circular Kernel (see Chapter 9)
#include <CGAL/Circular_kernel_intersections.h>
If this kernel is used, in addition to the combinations of 2D types previously listed, Type1 and Type2 can be any of the following:
An example illustrating this is presented in Chapter 9.
With the 3D Spherical Kernel (see Chapter 10)
#include <CGAL/Spherical_kernel_intersections.h>
If this kernel is used, in addition to the combinations of 3D types previously listed, Type1 and Type2 can be any of the following:
An example illustrating this is presented in Chapter 10.
Also, another predicate is provided with this kernel:

 
checks whether obj1, obj2 and obj3 intersect. 
where Type1, Type2 and Type3 can be: