When opening a VE editor (e.g. to edit an existing post), we're currently deserializing it from HTML to wikitext (on the server) (this step is done for wikitext editing too). Then, we re-serialize it to HTML to open VE.
When the user is done editing, we then deserialize the HTML (which the user just entered in VE) to wikitext using a network round-trip to Parsoid, post wikitext to the server (to submit the form), then reserialize it to HTML on the server (this last step is again done for wikitext editing too). (Parsoid does not yet have a HTML validator (for XSS, etc.), so we currently need to convert it to wikitext then back to HTML as validation. However, this should be done on the server, rather than making the user wait for an AJAX request (for conversion) and then another for posting it.
Basically, it should never do an unnecessary serialization or deserialization. For the no-JS edit and post pages, we will continue to need to serialize on the server.
However, whenever we're saving VE content, we already have the HTML and should post it like that to the server (but see above). Similarly, when starting a VE edit in JS, we should fetch the HTML, rather than fetching wikitext and requiring a network round trip.
This is also related to and will help with fixing T73474: R5. Flow uses synchronous XMLHttpRequests (VE+Flow). See also T88182: Q2. Define and estimate work for Minimum Viable Product of VisualEditor in Flow (spike) (Catalan, Translatewiki).