Seems to be working well, so I'm running the first full-scale test run. From the first 10 levels of Fun alone, it's cut about 100KB off the total filesize.
Comparisons:
Level 1: 51KB > 49KB (3.9% reduction) [Dirt]
Level 2: 31KB > 17KB (45.2% reduction) [Pillar]
Level 3: 23KB > 8KB (65.2% reduction) [Fire]
Level 4: 108KB > 96KB (11.1% reduction) [Crystal]
Level 5: 71KB > 50KB (29.6% reduction) [Marble]
Level 6: 74KB > 69KB (6.8% reduction) [Dirt]
Level 7: 25KB > 18KB (28.0% reduction) [Pillar]
Level 8: 102KB > 90KB (11.8% reduction) [Crystal]
Level 9: 75KB > 55KB (26.7% reduction) [Marble]
Level 10: 129KB > 126KB (2.3% reduction) [Dirt]
Overall: 684KB > 573KB (16.2% reduction)
As you can see, the straight-edged tilesets benefit far more than the rough-edged ones, but all of them benefit at least a bit.
EDIT: For all of Fun; 1.66MB > 1.41MB (15.1% reduction)
This is including the LEVEL000.DAT file, which has increased in size by only 7KB.
Tricky: 1.46MB > 1.10MB (24.7% reduction)
Taxing: 1.31MB > 0.98MB (25.2% reduction)
Mayhem: 1.60MB > 1.07MB (35.6% reduction)
And in total, for the EXE:
8474KB > 7089KB (16.3% reduction)
While still very large, this is definitely an improvement!

I'll test it out a bit myself before I upload anything.
EDIT: Goes without saying that there'd be some issues... xD Time to look into it...
EDIT: Looks like the issue is a very minor one, and solely in the LVL files, not the VGASPECs. It can be fixed with a simple adjustment to them, without the need to reprocess all the levels. I'm also doing some multi-pass test runs to see if this is what was causing the problem with multi-pass terrain building. (It's
very plausible that it was, and running extra passes could potentially offer a huge improvement on some levels.)
EDIT: This was indeed the problem, or at least, a two-pass conversion comes out fine on the one level I tested it on (where I was noticing issues before). Time to try 4-pass conversions and a different level.
EDIT: All worked perfectly! There's some oddities in which exact pieces it uses for what purposes (which of course is invisible to the end player), but the resulting level is pixel-perfect to the directly-made-to-VGASPEC one at a much smaller filesize.

And since multi-pass is working now, I'm running the conversions again with four passes rather than one; we'll see how much of a difference this makes. (The two levels I was using as primary test runs were Fun 1 and Fun 5; on the former 4-pass makes a noticable difference from 1-pass, while on the latter it's negligable - but 1-pass already does a
lot on the latter.)