In addition to this discussion:
I would like to know if the new mathutils.bvhtree module may help to detect intersections of two meshes.
yes, overlap in mathutils.bvhtree does show pairs of polygons that are intersecting if any.
You will have to create 2 bvh trees, for each mesh, using one of the methods given in the api (from Object, from Bmesh, from Polygons), then use those as
pairs = bvhA.overlap(bvhB)
So a basic check would just see if that list is
 or something. Or may further use the pairs of poly to do something.
Note that there are some limitations