The UC300eth has 5 discrete ports and one analogue port.
Two of the discrete ports (2&3) mimic the standard LPT/parallel port, and because of this you can easily use a standard parallel Break Out Board to interface to either of these. The signalling is pretty standard - 5V levels (outputs are driven by 74HC13s, interfacing the onboard 3.3V logic of the UC300eth with the offboard signals at 5V; inputs are coupled via a resistive divider networks to drop the 5V input to the onboard 3.3V), but the nature of this is such that a BoB of some description is highly recommended to avoid any problems with spikes/noise etc driving or damaging the UC300eth (and the UC400, for that matter). The UC300eth is supplied complete with a cable to allow one of the ports 2 or 3 to be directly wired to a standard parallel/LPT BoB, and you can buy more cables easily (26W-IDC to 25W D-Type).
Ports 1, 4, 5 are different - they each present a significant number of inputs (13) and a small number of outputs (4) with the same signalling as ports 2&3 (74HC13 driven at 5V, resistive divider on inputs). A standard BoB cannot be used on these ports. This is where the UB1 provides a significant benefit over standard BoBs - providing a configurable (24V/5V) opto-isolated interface to the inputs, and a buffered driver for the outputs. The UB1 also provides an interface for the analogue port - providing two separate isolated analogue outputs to drive e.g. a spindle speed interface.
The UB1 also provides the necessary 5VDC supply to the UC300eth.
The UB1 is, without doubt, a decent interface between the UC300eth and a machine, but it's worth checking that you need the additional support required for the non-standard LPT ports, as it clearly comes at a price.
At this time, my own build can use the ports 2&3 with standard (cheap) parallel/LPT BoBs, and I'll reserve the use of the additional capabilities for a later use (if at all).
I am tempted to throw together a rugged I/O - or BoB board specifically for these ports and publish the board design through Seeed/DirtyPCB to allow anyone to build their own.
Regarding the software etc, the UCCNC - it is configured that it understands the respective inputs and outputs on each port, and you can program these with the required functionality (i.e. designating an input as E-Stop, or an output as a motor interface, or otherwise a standard discrete output). You cannot, however, change the type of interface (e.g. change an input to an output) - that is hardwired on the UC300eth.