1) compile with CFLAGS="-DHALFLIFEMODELS"
this is not tested at all. it probably won't work.
2) logic running in csqc is specific to that client. logic running in ssqc is visible to all equally. you can use iqm exactly like mdl if you're lazy, but you won't get foot sync etc.
skeletal models can use the csqc skeletal objects extension if you want full control over how that model's skeleton is displayed each frame, but its easier to just use simple frame blending, no special logic needed then.
3) its easier to just use the decal system and get clipped decals that way.
if you want to chop stuff up, you *could* use the brush editing system and implement some csg subtraction in your ssqc or whatever, but this isn't a polished feature and may have sync issues currently.
4) compile with CFLAGS="-DVM_LUA -DOTHERSTUFFYOUWANTEDTODEFINEDEXPLICITLYATCOMPILETIME"
you'll need to provide the libraries+headers. I think I tested with lua 5.1, but I've no idea if you'll need to fix anything for more recent versions, I don't really care enough to try.
servers will now load progs.lua in preference to progs.dat.
its ssqc only, and has limited extended-builtin support (as they need to be rewritten explicitly for it) but at least string manipulation can be handled natively by lua.
there's no guarentee that it'll work correctly.
you'll need to provide your own gamecode (vectors are a real pain). you'll probably need to look at the engine source to figure out how to call builtins. I don't recall what happened to my test lua gamecode.
So yes, its a bit of a joke feature (like the lua language itself..), but it was working at one point. I don't recommend seriously using it though, just because lua kinda sucks.