Wolfwood
Howdi,
.
First, does the Apprentice Edition support VEX DSOs as described in,
$HFS/houdini/vex/dso/VEX_VexOp.html
dunno, sorry

Woolfwood
.
Second, it says that only g++ is needed on Linux but the HDK is needed on windows. I'm curious as to why.
Would a cygwin port of g++ work on windows? Or are there other factors?
Good question – and you're not the first to ask it. Unfortunately, I've never heard an answer to that one

Woolfwood
Third, if the Apprentice Edition does allow VEX DSOs then what is the proper installation?
.
myVexOp.dso in $JOB/houdini/dso/vex?
This will work because $JOB is in my $HOUDINI_PATH and $HOUDINI_DSO_PATH checks in the dso directories of $HOUDINI_PATH?
(hconfig -ap is your best friend)
.
Once the myVexOp.dso is in the correct place you need to add it to the library
echo vex/myVexOp.dso > $JOB/houdini/vex/VEXdso
.
Am I understanding all this correctly?
This one I can answer

The mechanism is this: Houdini looks through the HOUDINI_PATH and also checks some “pre-determined” subdirectories thereof. Specifically (for DSOs) , it looks inside $HOUDINI_PATH/vex and if it exists, will look for the file “VEXdso” inside there. If *it* exists, it will go through each entry inside it, and *prepend* the HOUDINI_DSO_PATH to it to finally get at each *VEX* dso (I'm stressing VEX because things are different if you're talking about custom-pluggin dso's – the ones you'd make using the HDK).
So. Say your *vex* dso is in “/a/b/c/d/myVexDso.so”; and let's say $JOB is among the members of HOUDINI_PATH. To get houdini to find your dso you would:
1. Make sure the directory $JOB/houdini/vex exists.
2. Make sure HOUDINI_DSO_PATH contains (among others) the “a/b/c” entry:
“<…>

a/b/c:<…>:&”
2. In there, create a file called VEXdso (who's full path would then be “$JOB/houdini/vex/VEXdso”
3. Edit this file, and add the single line:
d/myVexDso.so
Now Houdini finds it because:
1. it checks $HOUDINI_PATH, and among the things there it finds ‘$JOB’, so it tries $JOB/houdini/vex and in there finds the file VEXdso.
2. It then comes across the “d/myVexDso.so” entry in this file, and prepends each one of the $HOUDINI_DSO_PATH entries to it in turn, until it gets to “/a/b/c” which then expands to “/a/b/c/d/myVexDso.so” which is the full path to your dso.
The confusing bit about the “standard” way described in the docs is that parts of the final chain are implicit, because houdini doesn't just strictly check $HOUDINI_PATH, but also $HOUDINI_PATH/houdini, ($HP)/houdini/dso, ($HP)/houdini/vex, etc.
Confused yet?