Wrong image path within inline styles in the head

If they are inline, your image paths should be /wp-content/themes/theme_name/ and then whatever the directory is in.

Since you are already loading them via file_get_contents(), why not do a search & replace and use the full URL for them? With proper caching, this shouldn’t make any impact on the load time itself.

The usual way is to enqueue your styles via wp_enqueue_style(). Plugins like W3 Total Cache or WP-Optimize offer solutions to merge all those loaded styles – this will only work if you properly enqueue them and not if you inline them.