Spot on :)
.element::before puts something before/left or behind the element, and
.element::after puts something after/right or in front of the element.
There are loads of fancy things you can do with them - take a look here for ideas:
https://css-tricks.com/pseudo-element-roundup/
Yes that's perfectly fine. The only thing I would say though is that you might find, on very wide/high resolution displays, the overall layout could get so stretched-out that it looks a bit awkward. Setting a max-width will give back a bit of control and you can do that on the <body> tag using your preferred width (whenever the content/layout starts to look iffy)
Code:
body { max-width:1920px; margin:auto }
Possible max-widths = 1440px, 1760px, 1920px; You can roughly test how your layout looks on a mammoth widescreen with the help of the browser zoom setting. In Windows you can holding CTRL key and scroll your mouse wheel up and down, OR, press CTRL with the "+" or "-" key.