1. If using mark positioning, then you need contextual kern lookups to avoid collisions. For kerning to glyphs preceding the diacritic, you need a pair adjustment that uses the following mark glyphs as context. For glyphs that follow the diacritic, you can kern off the marks, although you need to take into account the possibility of stacked marks and mark order.
As I've expressed elsewhere on Typophile, the interaction of base glyph spacing and positioning (kerning) with mark positioning, is the weakest aspect of the OpenType architecture. The OT lookup structure makes this kind of work both arduous and inefficient.
2. Avoid PUA codepoints like the plague. They should never be used for anything with semantic content. The correct way to handle precomposed diacritic glyphs representing combinations of Unicode base+mark(s) characters is to map them with ligature lookups in the 'ccmp' OT Layout feature.
3. There is no standard offset for marks on their zero widths. I tend to offset them as you have shown, over a medium width vowel such as o, since this ensures that they will have at least reasonable positioning even in software that doesn't support GPOS mark positioning. But it is just as valid to e.g. optically centre them on the zero-width. What I strongly recommend is that you offset them consistently, so that the same anchor or composite position can be used for all marks on a common base glyph.
