A first, maybe trivial, answer I thought could be to compute the convex hull C of the polyhedron P, and then to divide the insiemistic difference C - P into connected components. Could I be on the right direction? If yes, how do you compute the "difference" between meshes? Are there some CGAL functions I can use for "subtracting" meshes and getting the connected components.
Yes you can, you should look into the Nef_polyhedron_3 : https://doc.cgal.org/latest/Nef_3/classCGAL_1_1Nef__polyhedron__3.html
Basically you convert your mesh and its convex_hull mesh to nef. From there you get acces to Boolean Operations, including the Difference. So you can get what you want, and then convert it back to Polyhedron.