How to approach the modeling of duct work, piping, wiring?
To create basic connections you can use any or a combination of the following 3 Techniques:

Pipe Joints, part of the Mesh &gt; Extra Objects Add-on

Open the user preferences window (Ctrl+Alt+U in 2.79, or Edit&gt;Preferences in 2.8) Navigate to the add-ons section.
Enable the Add Mesh: Extra Objects Add-on


You'll have a new item on the add menu to create pipe joints.

UPDATE:
As of version 2.79 and 2.8 Pipe Joints are accessible on Add&gt;Mesh&gt;Mechanical&gt;Pipe Joints.


At creation time, each of the tools have a different set of options to refine the angle, diameter, etc. (if the tool tab is not open press T to make it visible or press F6
Keep in mind that once you make any further transformations, those original parameters cannot be reset (read this).



Connect different segments.

To connect two cylinder segments that have the same number of vertices, select the end edges and use Bridge Edge Loops, and adjust number of cut and smoothness.



Curves

To create large sections and more intricate paths , create a base shape for the pipe.

And use it as a Bevel object on a curve:

To deal with sharp turns adjust the control points by pressing B and selecting Vector. The width of the curve can then be ajusted by changing the radius of a control point.