I’ve used COBS and MessagePack combined for some embedded sensor projects. My implementation for Arduino (also includes some other functionality on top to encode data with MessagePack): https://github.com/telemetryjet/telemetryjet-arduino-sdk
As for delimiters, it's not so much that to use COBS you need the delimiter, but the causality usually goes the other way, i.e. you want to send packets over an unreliable stream where every symbol is valid data, so you use 00 as the packet delimiter, and encode the actual packets with COBS (so the encoded packets won't have zeros).
So in general you won't need to "flush" partial data, because the natural way to interface to this type of channel is to send whole packets. If you don't know in what state the channel is, you can always send out a 00 before the start of packet to make sure the previous packet gets terminated.
And usually the packets themselves will have some additional validation like CRC, so the previous incomplete packet will be ignored.
So it's `02 xx`. By the way, a single zero byte would be `01 01`.