There are no hard-and-fast rules in Grav about how you must do things, you really need to experiment with it based on how you want things to look, and how you prefer to manage your content.
I prefer to keep layout-things in the theme's twig templates as much as possible. If there's more complex layouts required you should look at modular-pages as a possible solution by breaking up a single page into multiple modular elements.
You can also make use of the page-inject plugin to inject other pages into a page, this way you can reuse common page elements in other pages.
My least favorite option is putting HTML into the markdown files themselves. This makes things harder to maintain over time, and just seems hackish :)