Please see my comment to the question and also, for some basics, my recent answer:
Inline functions executed faster in header or implementation? C++[
^].
Your questions cannot be answered as formulated, because most of them are ether logically incorrect or based on wrong assumption or wrong guess, but you can just get some advice.
First of all, you have to tune up your approach. For example, don't rush into asking "what is the point of doing this and this"? Right approach would be learning what exactly is going on. Also, read on the topic before asking questions, only then you would be able to ask some productive question. For example, you would not ask questions about DLL is you understood "normal" static libraries and linking better. Then you could see some frustration about the limitation of static modules and maybe even get to the idea of DLLs by yourself. I observed such development of thought in some of my colleagues, absolute beginners at that time. And then, you could read about DLLs. See, for example:
Dynamic-link library — Wikipedia, the free encyclopedia[
^],
Dynamic-Link Libraries (Windows)[
^].
But I would strongly recommend that you learn how the build of the monolithic executable module works, what is fed to the compiler, what a linker does. At this moment, you apparently have no clue. It's not a problem, you can quickly learn it, based on regular study.
Also, it looks like you are fixed on the idea of hiding some programming asserts from other developers, something related to your intellectual rights, perhaps. Here is my advice: forget it for now. All the topic we discussed on this page are totally irrelevant to such issues. By the time you learn to develop something valuable enough, which potentially can become a target of the attach of stealing of the intellectual properties, you views on this matter may radically change. It's not the right time to be concerned with that.
—SA