Regarding the question
Is there a script, tool or a modifier that let me delete the [hidden] internal faces-edges-vertices and let the shape of my main mesh remain, instead of separating each mesh from the main one and using boolean modifier many times?
I am not aware of such a script, tool, or modifier. I can think of similar tools, such as the one which locates non-manifold elements, but I don't think they will do what you want; further, I think development of such a tool will be difficult because of the collateral effects. Consider the default cube: if you hide or remove an edge, you also hide the two faces of which it is a constituent element. And if, in addition to the edge, you remove the two vertices which define it, you remove or hide four additional edges, and four faces, too.
I downloaded your casa.blend file, and examined the model it contained. I have several reflections I'd like to share, though they may not exactly answer the question you asked. And while the boolean modifier that Ray outlines in his answer to this question is one choice, invaluable in some circumstances, but alas, not all. This is because in some cases, the boolean operations can result in awkward geometry, for example, in the case of the cone primitive which you illustrate in the images included with the question. This is one case where the boolean modifier would not be my first choice.
Another factor that may influence the choice of modeling methods, and in this case how, and even whether, to eliminate or suppress hidden Blender elements is the intended use of the final model. It may be that in the case of a model to be used as an asset in a game, that it can be detrimental to remove all of the hidden elements, because doing so sometimes causes unnecessary excess geometry that slows render times, and game performance. As an example, the default cube renders as a dozen triangles, two per side. In the second image of two cubes in Ray's answer, where booleans are used, the upper cube contains 16 triangles. So in game usage, it might be better to simply leave the cube intact and ignore the hidden elements. By contrast, however, if the model is to be used in 3D printing, removing hidden elements will be useful in removing non-manifold edges.
Three categories that techniques used in modeling can be classed into are subtractive, additive, and adaptive. The boolean technique that Ray outlines in his answer (and that I use myself in some cases) illustrates the subtractive method: part of the mesh is removed. But additive and adaptive techniques seem to be more commonly used in modeling. The casa.blend file referenced in the question is a good example of additive modeling; elements of the model are created by adding to the model. Another example of this is when a potter, while throwing a pot, adds a cylinder of clay to the pot to form a handle. But there is sometimes a disadvantage of additive modeling, which you have found and voiced in your question; it can result in superfluous geometry, which may need to be removed.
I think the solution to your question, though, lies in changing your workflow for the model. Rather than using additive modeling, with the attendant need to remove some Blender elements, I think you would be better served by using adaptive modeling, and eliminate the need for removing Blender elements by not adding them in the first place. So while I might start with a cube as you did in your casa.blend file, rather than creating your model by adding other cubes, instead I'd add geometry by adding loop cuts, extrusion, translation, and scaling, with the useful benefit that by doing this you do not add superfluous geometry that you need to worry about removing later.
Finally, it can be helpful to think about workflow for a particular model in advance, before you even delete or modify the default cube. This can even include drawing sketches of the proposed model to better visualize how to create the model, and decide where to create an part of the model by using additive modeling techniques, where to use adaptive modeling techinques, and where subtractive methods will be the most efficient way. Spending a little time considering your workflow methods can have large payoffs by reducing the time needed to to build the model, and spending less time cleaning up undesirable, superfluous elements.