Important Information about Boolean Operations
ZBrush is well known for its ability to work visually without considering the underlying topology of 3D meshes. This is particularly true with core features like DynaMesh. The way of working with Boolean operations is slightly different and you need to respect some simple rules to ensure successful results. The Boolean real-time preview engine is not impacted by these constraints.
Avoid coplanar faces
When you are building models, avoid polygon surfaces that are directly on top of each other. A simple example would be two stacked cubes where the polygons in contact between the two meshes are strictly on the same plane. To fix the coplanar faces, moving one of the cubes slightly will offset the two polygon surfaces so they are no longer overlapping.

An example of coplanar faces: On the left, the two separated cubes. On the right, the two cubes have been put on top of each other, creating coplanar faces (see the tip of the arrow)
Work with volumes
As with DynaMesh, the Boolean tool is designed to work with volumes rather than single sided surfaces. When performing a Boolean operation, it is strongly advised to work with watertight meshes to produce the results you are looking for.
Mesh density consistency
The Boolean system is only going to modify the topology of the meshes where the Boolean processes happen. Try to avoid combining really dense models with low polygon ones. The results from these two types of meshes can produce long and thin triangles which may be problematic if you attempt to perform another Boolean operation on this model.

Notice the variation of density between the two models. Although the Boolean operation will be performed without any errors, the result may be problematic if you perform extra Boolean operations on the resulting mesh.
Reduce Dynamic Subdivision levels
When working with the ZModeler brush and/or low polygon models, you may be used to using Dynamic Subdivisions. It is very common to select high smoothing values with Dynamic Subdivision as it doesn’t slow down ZBrush and it can increase the visual quality of your models. However, the Boolean process will convert these Dynamic Subdivisions to real geometry before processing. This can produce elongated polygons on the borders of the original topology after processing. These triangles may generate topology issues if you attempt to perform another Boolean operation with the resulting mesh.
It is strongly advised to use lower Dynamic Subdivision levels when possible.

On the left, the model with Dynamic Subdivision enabled. On the right, after being converted as raw topology. Look closely at the very long and thin quadrangles which will become very thin triangles when intersecting with other models during a Boolean operation. Reducing the resolution of the Dynamic Subdivision is advised.
Non-manifold edges must be removed
Behind this barbaric name is a common 3D topology issue which consists of an edge sharing more than two polygons. This issue can happen when importing models from other software.
The Boolean engine includes a cleaning process which will try to fix these non-manifold edges but in some scenarios, it won’t be possible. For best results stay away from using meshes with non-manifold edges when using the Boolean system.