It's up to an implementation to maintain the order of a header. Assuming an implementation does the sane thing and uses a PHP associative array, they the headers are ordered based on the order that they are added.

I don't understand exactly what you're asking. You'll need to be more specific about what you're asking or provide a link to the spec. If you're talking about headers that can't be combined into single header (e.g., Set-Cookie), then that is already addressed in the document: https://github.com/mtdowling/fig-standards/blob/c7991d5f84d281e9a77ad5551ef5620a610975fa/proposed/http.md#using-headervaluesinterface-instead-of-an-array