I've re-read this questions a couple of times and I think there is some general confusion that you have with how Placeholder keys work in Sitecore. So like you mentioned, you have a Layout view defined. That should be the case that you would always have for any page you want to have UI interface. Example, if you are building a blog article page, you would at the bare minimum need to create a new layout in the layouts folder and assign that to either the item directly or the items template standard values:

That layout can have html within that file, which you specify via it's path, which you can see within the screenshot. That html can also contain Sitecore html helpers which is how you would define a Placeholder key. These are definitions that allow you to add controls (typically called renderings in Sitecore) to a page, which is done via presentation details.
So keep in mind, the intent for a layout is to build the basic shell of your pages on your site and most times it will contain html related to being just the shell, such as html head and a pretty simple body tag. It's the placeholder key definitions, that allows you to setup a blog page vs a forum page using the exact same layout in Sitecore.
So for the blog page it would have the same layout defined, but different renderings defined vs. the forum page in it's default devices presentation details. When you assign additional controls/renderings to a page (either directly to an item or via it's standard values) you are telling it which controls should show up for that specific placeholder key.
An example from your layout above:
You have a Layout, that's been assigned to an article page for example. When you are viewing the presentation details for this article page, you should see that the Layout is selected which will map to the html you have copied above. The controls tab should show renderings (which are separate groupings of logic, which can related more to a partial view in .net MVC). For example, there is a header rendering, and it's placeholder is set to "header" in the presentation details. So the header rendering is being added to the page in place of the placeholder key header
from your layout file. So when you view the page on the front end, you will no longer see @Html.Sitecore().Placeholder("header")
, but instead you will see the rendered html from your header
control/rendering.
So the answer to your question is this, if you don't specific a rendering to use a placeholder key, then nothing will show up there on the front end. Example, if you hadn't specified a header rendering to use the header
placeholder key, than nothing would display there. And when you do specify a rendering to display when you specify it's key, it will replace that placeholder with the rendered contents of the renderings you've selected to display in that placeholder key placement.
Also this is how it's always worked, and you should find this same behavior in 6, 7, 8 and even 9.