How to approach implementing a custom page header for each page
You might want to look at a solution using Minipanels.

Minipanels are basically Panels (shipped together) that can be used as a block.

You could create a minipanel with the required content and assign that block to the header region for a particular page.

Alternatively, you could set it up as a content type with an image, title and teaser and then a template or view mode to render it in the header.