It helps to imagine the pin is driven (hard) high or low by two switches; one connects the pin to the power supply, one connects it to ground. At most, one of these switches is turned on concurrently, but it’s also valid for neither switch to be on.
On the imp, each pin also has pull-up and pull-down switches - imagine two switches, each in series with a resistor (~50k), one to power and one to ground.
When a pin is an input, neither hard switch is on. The pin is generally driven externally, or can be weakly pulled up or down by the pull-up/pull-down switches (DIGITAL_IN_PULLDOWN or DIGITAL_IN_PULLUP). The idea here is that the pin will stay in a known state unless the external input is driven by another piece of circuitry.
DIGITAL_OUT is “push-pull” mode. This uses the hard switches, and either drives the pin high as hard as possible, or low as hard as possible. The pin gets close to the supply rail as you noted, and current is sourced to light the LED.
This is most often used to drive output signals that need to source and sink current; you must never connect two push-pull outputs together though, because if you do and one party tries to drive the line high whilst the other one is trying to drive low, large currents will flow through each parties’ output drivers and bad things can happen.
DIGITAL_OUT_OD is “open drain” mode (it’s called open drain because the switches are FETs, and the pin is effectively only connected to the bottom FET’s drain pin). This is where only the bottom hard switch is used (so the pin can get pulled hard low, but if you write 1 to the pin, it just floats). You could use it to light the LED if you connected the anode of the LED to 3.3v, and the cathode (via the resistor) to the pin - then writing low would, just as writing high does now, allow enough current to flow to light the LED. You’re just seeing leakage through the pin, which is what is giving you the 0.395v.
The useful thing about DIGITAL_OUT_OD is that open drain signals (even from multiple chips) can be connected together safely; as each party can only pull the signal low, two or more of them pulling low at the same time is harmless - and you’d have a pull-up resistor somewhere to ensure the line is high if nobody is pulling it down. This type of wiring used to be used extensively to combine interrupt signals, for example, and nowadays you see it on I2C buses, allowing safe connection of many devices together (the imp automatically configures pins as open drain when you set up an I2C bus).
DIGITAL_OUT_OD_PULLUP is open drain, but with the pull-up resistor switch turned on. This means writing zero to the pin pulls hard low, as before, but if 1 is written the pin is pulled up weakly through the resistor, limiting the current that can flow. The LED is lighting, which means you’ve just got to the Vf (forward voltage) of the LED, but very limited current is flowing.
This isn’t used terribly often, but can be helpful now and then.