Start with learning what a bubble diagram is as it's used in architecture. It's a topological diagram of a space, with bubbles as the spaces and lines to represent passageways. I didn't find any single great web page to recommend quickly, but doing an image search yields lots of examples.
A bubble diagram can be thought of as a graph with bubbles as vertices. In your example, model the "sky", the blob including the top edge, as a vertex. The cave is another vertex and the entrance is an edge. With this perspective, it's easy to generate as much cave-like complexity as you want.
The next trick is turning it into geometry. Essentially, you want to push out from the skeleton of the graph and make voids where the player can navigate. At the same time, you want to make sure that these voids don't push out too far and thin out or eliminate the walls. So you also need to model the solid area, and that's done with a dual graph. The dual graph goes "underneath" the original, in the sense that edge crossings represent conflict which is resolved in favor of void over solid.
Summarizing: (1) Make a topological graph with the features you want. (2) Create geometry for graph, assigning a location to each vertex and a path to each edge. (3) Construct a dual graph, and assign its geometry. (4) Flesh out the space associated with each graph by growing them outwards, resolving conflicts in favor of passage rather than blockage.
You might want to convince yourself that the perimeter list of the final geometry can be generated by a half-edge traversal of the graph, much like walking a maze with one hand on a wall.