Is it bad practice to use overlapping meshes/objects? I noticed that in a lot of videos people will make objects that have two or more overlapped meshes, such as a gun made of a barrel, magazine, etc. and they look fine, but I would assume this would cause issues for rigging, animating, and even reduce performance in a game engine due to the internal geometry and separate objects, wouldn't it? (not talking about z-fighting)

Is there any problem with making an object by just overlapping two different ones, with no geometry connections?

For example, if I was to create a windmill that I wanted to easily rig and animate and export to a game engine, should I create the windmill's sails from the geometry of the windmill and keep it as a single object, or should I create a new object and make the sail then Boolean it so it's 1 object, or instead just leave them overlapping?
I think that « 1 or 2 objects » and « meshes overlapping » are two different topics, and what you decide really depends on your needs. Anyway:


Don't overlap the meshes of your object if you want to 3D print.
In the case of a gun with a barrel, if you don’t need to animate the barrel you can keep one unique object. No matter if some meshes overlap, but you could consider deleting some vertices if they are invisible, i.e. useless. If for a reason or another you want to keep 2 separate objects (for example you want to keep a modifier only on a part of the whole object), you can decide to parent the barrel to the gun, or parent the 2 objects to an empty, it will make the manipulations easier.
If you need to animate the barrel (or the sails of a windmill) you'd better make 2 separate objects, it will allow you to parent the barrel to an empty and make a 360° rotation. If you keep the whole gun one object you'd have to use bones and anyway I don't think you can make a bone rotate more than 180° (?).