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).
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. 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}