Diference between TopoDS_Solid and TopoDS_Compound. BRepAlgoAPI's like common and cut wont work with Compounf


I have to questions regarding TopoDS_Compound

1: whats the diferences between TopoDS_Solid and TopoDS_Compound?

After using the BRepOffsetAPI_MakeOffsetShape PerformByJoin or PerformBySimple method i get a TopoDS_Compound
I want to cut a Shape out of the compund.

When i do cut the Shape after using the performbySimple i get the expected result. But I can not set a toleranz on the offset, witch i need.

When i Use PerofromByJoin It seems as the compound is only made out of a skin / shell.

If attached 2 pictures. In the pictures you can see the diference of the results. I perform 2 cuts. When i use PerformByJoin, only the first cut (Vertikal) is visible because the shape being cutout, touches the surface, the second Shape (horizontal) it smaller and schould create a hole in the body. Expected result is seen in the picture byJoin.

2: What am I meeing? Hoe cann I fill the compound / Skin / shell?