Hi Brad,
#1 is something I've been thinking on lately, ideally - any changes to custom serialisation should affect both the JSON and XML representations to keep fidelity, I've just filed [1] to support serializing and maybe deserializing dates as ISO-8601, I've also added [2] to look at generic support for custom serialisation.
One of the problems I had last time I looked at this was supporting round-tripping, i.e. going from code -> json <- code -> xml <- code -> json etc.
If there was a defined regex pattern for the reader of a custom SerDe that could be doable… This is a good time to look at it as I was hoping to actually start releasing soon :)
As for #2 and collections, so far I'm just including each collection entry as a sub resource ( thinking of renaming that to subRepresentation to match the new style of the API as well ) with the same rel, i.e.
<resource href="/customers">
<resource rel="customer" href="/customer/1"><name>bob</name></resource>
<resource rel="customer" href="/customer/2"><name>bob2</name></resource>
<resource rel="customer" href="/customer/3"><name>bob3</name></resource>
<resource rel="customer" href="/customer/4"><name>bob4</name></resource>
</resource>
From here, you just process any "customer" resources you find. I'm not exactly sure what "best practise" is as HAL is still quite young. These could easily just be <link rel="customer"/> as well, using embedded <resource>'s however gives you the ability to also include some minimal representation of data.