1) Create a cube, scale Y and select one of the side faces.
2) Face | Extrude -> Normal, then repeat a few times (I used shift d)
3) Select faces as shown, Face | Extrude Region Normal, then repeat (as 2)
4) Final shape after (3)
5) Select all upper and lower faces (50 total here), select one face, press I (similar)
6) Face | Inset, drag to suit, say 20% (all upper + lower faces should now be inset)
7) Measure the thickness of the geometry that you need to bridge holes through. (Select an edge and note readout in top left corner of window) - (Would have been better if I'd done this earlier - then no need to re-select all the faces :)  )
8) Select all inset faces (one, then I, similar) and Face | Extrude Normal, inwards, half the thickness of the geometry (here, use 0.228 units) - or use Flatten > Y (RMB option) to align the selected faces onto the same Y plane.(need to use Face | Inset > 0% first, to ensure non-tapered holes)
9) Select the whole object and weld.
10) Through hole(s) after welding.
11) Select all middle edge loops (select edge, press L, press I)
12) Dissolve all loops
13) Select whole object and apply cleanup.
14) Finished object.
Multi-face bridging (using weld)
A possible alternative to bridging (many) holes through a piece of geometry. (The first few frames are essentially to obtain a suitable vehicle to demonstrate the method - use any method you prefer to produce a similar object.)
Bridge and Weld
Some potential mis-alignment issues that might cause problems during a weld op.

1) Both weld faces 'perfectly' aligned and the same size - default weld setting should be ok (this is the only example here where it will be :)  )
2) Faces same size / shape and parallel / touching, but (slightly) displaced. Measuring the (maximum) lateral displacement (select 2 verts, note distance) will provide a starting figure to enter into the 'weld' distance tolerance box.
3) Faces still touching / parallel, but different sizes. Measure the biggest discrepancy and use this - as in 2.
4) All of the verts (except one) touching, depending on the maximum angle, you might get away with the measure and enter (as before) workflow. If, however, the angle is greater than about 8 deg, you'll probably need to do something else to rectify the situation.
Select the angled face and flatten it ( if aligned to a major plane) - use RMB option and select 'good' face as a reference.
Select the troublesome vert and use Move Free (or Tweak) to get it over the corresponding vert on the other object - ok, but crude.
Best and most accurate option (imo). Select the vert and use Scale | Uniform to a point (RMB option, drag to 0%, hold shift to constrain or tab enter zero) Detailed example below :)
5) One face angled with respect to the other. Use any of the previous techniques if angle greater than about 8 deg
6) Faces same size / shape but separated. Measure separation and use as a basis for 'tolerance' entry.
7) One (or both) faces totally distorted. (Forget it and take up knitting or embroidery.)  Depends entirely on the 'exact' circumstances - Using Face | Bridge is one option :).  However, if there were lots of faces like this (all distorted), select them all and apply flatten (to a standard XYZ plane makes a lot of sense - can then use view XYZ)  Even if this takes some of the face pairings into 'thin air' it doesn't matter - weld will still work (provided other troublesome aspects are 'sorted')
If, after flattening, entering a large enough (weld) tolerance to deal with all the face pairs causes trouble with other geom that you don't want to weld - select all faces and scale uniform - this will also scale the lateral misalignment and probably move the faces to be welded further away from surrounding geometry.- failing this, view (true, ortho) the whole system and do a bit of manual tweaking (in w/frame) to get verts more closely aligned.

NB The 8 deg (approx) angular misalignment figure is one I've obtained by just 'messing around' with pairs of (simple) objects - as such it may be totally inaccurate or even wrong - but this is what it seems like to me :)
Welding  multiple (pairs of) faces.

1) Object to be mirrored and welded. Select one and only one, of the mirror plane faces.
2) Mirror - either Virtual Mirror (and Freeze) or Face | Mirror and then Weld. Wings will leave selected the verts (around the Welded faces) as confirmation or the weld process.
3) If you need to be absolutely certain about the integrity of a piece of geometry after an operation such as this, do a trial smooth and view in wireframe mode. As seen here, all is ok.
4) This shows the result after selecting all 5 mirror faces and applying Face | Mirror. The unsmoothed object would appear as in figure 2, immediately after the Mirror op, but a smooth and view in w/f  will produce this sorry sight.
(Another clue to this taking place is that the geometry count becomes much greater than that expected from a 'correct' mirror op)

Therefore, when attempting to join / mirror anything similar (semi-circular piece of torus to whole) only select one face, mirror and  weld - never both faces.
The Vert | Scale (to a point sequence) in more detail.

1) Shows the 2 objects with the faces to be welded selected (I've moved them apart slightly - for clarity - and also displaced one vert on each.
2) Select the vert to be moved.
3) Vert | Scale Uniform (Use RMB for scale to a point option) and select the 'destination' vert (shown in blue)
4) Apply and drag mouse until 0% is reached (use shift to constrain or tab enter 0) - this image shows an intermediate position.
5) Final position of the scaled vert. If the other 3 verts had already been aligned, the default setting of weld would have coped with this.
This sequence illustrates some of the issues involved when an odd number of features exist on an object.

1) An object based on a 15 sided cylinder. It is now to be mirrored around the top face.
2) Attempting to select (and dissolve) all the intermediate edges on the top face fails and leaves those shown selected. Mirroring / welding around this configuration will not be successful.
3) The first stage is to cut the object in half - since it is a 3 sided one, additional geometry will need to be provided to obtain the necessary edge loop - edges to be cut are shown selected.
4) Situation after the edges (in 3) have been connected.
5) Select all necessary edges to loop cut the object in half.
6) After applying loopcut, selected half is discarded.
7) Another view of the remaing half.- still showing all intermediate edges on the top (mirror) face.
8) Attempting to dissolve all the intermediate faces again fails because of the 'aperture' part of the object. Select the 2 (small) loops around this strut.
9) Apply loopcut to separate this strut from the main object body.
10) Since this strut is now a totally separate object, it can be mirrored in its own right. Select the top face.
11) Strut is still separate from the main body, but has been mirrored . Select the (now single) top face of the main body of the object, ready to mirror this.
12) Main body after being mirrored. Still 2 separate objects - before the strut can be welded back onto the main body, weld faces need to be prepared.
13) Hide the main object, leaving just the strut. Select the intermediate edges on the faces to be welded and dissolve them.
14) Select the unwanted edges on the main body mirror face. Having 3 faces is ok, because none of them share common geometry with either of the other.
15) Situation after dissolving the unwanted edges.
16) Also need to prepare the weld faces for the strut. Select as shown.
17) After dissolving.
18) Display both objects, select both and weld. Verts around welded faces highlight after the op.
19) We now have half the required object with 3 'clean' faces - select one.
20) Apply mirror, select object and weld - as before verts highlight arounde welded faces.
21) Finished object after smoothing - viewing this in wireframe mode is always recommended to check for unwanted internal geometry.

Whilst there are many ways to achieve the final result with an object such as this, the issues encountered will remain the same - ignore them at your peril.
Here's some notes and comments about Face | Bridge and Object | Weld.
Why lump them together? Well, basically because I'm lazy and couldn't be bothered to do two new pages - and they share some common characteristics:

Faces to be joined must have the same number of verts / edges.
Faces to be joined must
not have their normals pointing in the same direction.
Faces to be joined must
not share a common edge or vert.
Bridge only works with one pair of (user selected) faces on one or two objects.
Weld will work on many pairs of (separate, isolated) faces on multiple objects. User only selects objects, Wings works out which faces will be welded.
Assuming the above specs are met, then Bridge will work ok - Weld might need some extra care because the 'distance tolerance' might need changing from the default setting to cope with (slightly) mis-aligned faces.
Significantly increasing the 'tolerance' setting, to try to cope with badly aligned faces may result in (other) faces being welded that the user doesn't want to be welded.

To check the v/e count of a face
, individually select a face, change mode to v or e. Wings displays the required info in the top left screen corner, changing to numbers only for v / e counts > 4.

To rectify dissimilar vert / edge counts on faces:
Increase vert count by selecting an edge (around the face) and use Edge | Cut -> 2,3,4 ......10 (or press number keys 2,3,4.....0) - using the RMB option with Edge | Cut, lets you slide the new vert along the selected edge, rather than having to accept the default mid point.
Decrease vert count by selecting the appropriate number of verts and applying Vert | Dissolve (Collapse).

If in any doubt whatsoever about the geometry resulting from a Bridge or Weld operation, do a 'trial smooth' and view in wireframe mode - it might save you a
lot of hassle later on :)

Other related stuff:
bikewheel (with 'proper' spokes) Bridged (and loopcut) spokes, weld for whole assembly - multiple face pairs.
booleans (similar result, anyway) Extensive use of Bridge for final stages (if done now, I would probably use weld instead)

Face | Bridge

Face | Bridge requires the user to select 2 (only) faces.

The bridge operation then forms new geometry (or cuts a 'tunnel') between these 2 selected faces, where each (selected) face has the same number of verts / edges. Bridge works if the faces are touching / far apart, aligned / mis-aligned, positive / negative gap.
Whilst bridge can certainly join 2 (touching) faces, selecting these 2 faces can sometimes be tricky - weld is designed to simplify this problem because touching faces don't have to be specifically selected by the user.
Face | Bridge (tunnel cutting)

The above sequences show how the end result of a tunnel cut using Face | Bridge is affected by the (relative) postions of the 2 selected faces.
In each of these 4 examples the faces selected for the Bridge op are the same as those shown (selected) on the unbridged sample. (Inset face and full face opposite)

To get the different results, all I did (prior to the bridge op) was to extrude +X the (smaller) inset face a different amount each time: (in order, from the sample in each image)
No extrusion at all (as the sample)
Extrude X partway thro' the cube
Extrude X exactly the same distance as the thickness of the cube.
Extrude X thro' the (larger) selected face and beyond.
Bridge automatically forms the appropriate geometry in each case - no other ops involved.

Whilst all these options have uses, of specific note (imo) is the third case. Since this effectively allows the user to cut a hole without bothering too much about the geometry on one side of the 'tunneled' object, it seems an elegant solution.  This has particular use in scenarios where you need to make things like windows / holes / apertures in walls. All that needs to be provided on one side of the wall is the correct number of verts. The nature of the bridge op creates the correct shape on this side. (See next item for more details)
Basic Face | Bridge operation
Select 2 faces with same vert count and apply Face | Bridge. New geometry is formed between the selected faces
This sequence illustrates some of the issues to be aware of re adjacent faces / faces sharing common edges etc.

1) I'm assuming that the user wants to weld 2 objects like the uppermost object. In this case there would be a total of 14 faces along the weld 'plane', 7 on each object. These faces would touch and be identical..Only one object is shown here (upper part of pic) for clarity reasons.
After the objects are brought together, selected and welded the image would look like the centre one here - ie showing the faces welded by displaying the verts associated with those faces.
Unfortunately, this gives a false impression of what's actually happened - as the bottom image of the (smoothed, welded) object shows. Only alternate faces have actually been welded - the 'depressions' indicate unwelded faces. Wings cannot weld across 'intermediate' edges.

2) To do this job correctly, the intermediate edges have to be removed (as top pic) - welding will then produce an object whose structure is ok - as shown by the bottom (smoothed) image.

If you actually want to produce 'holes' this demonstrates a reasonably quick way (there are others) of doing this by exploiting the 'multi-face weld' approach. Here, each of the alternate, isolated faces is correctly welded, forming (desired) rectangular thro' holes (between the welded faces).

It's worth noting that in each instance 14 verts are left selected - as weld 'indicators'

This shows that weld will work with multiple (pairs of) faces that satisfy the correct conditions (default weld setting used here)

If, in the above examples the second object was being created by doing a mirror op on the first - only select
one face - example one, however, will 'mirror' but still won't weld correctly because of adjacent faces.
Object | Weld requires the user to select an object (or objects) that contains faces to be  welded

Wings then works out which (pairs of) faces satisfy the weld parameters and welds (joins) them.
On a face to face basis, each pair of faces is essentially 'joined together' by the equivalent of a very thin bridge operation (using default setting)

For Weld to work with the default setting (0.001 wu), faces must be touching and identical (for all practical purposes) otherwise, an appropriate tolerance needs to be input that is greater than the biggest mis-alignment distance.

As this is an object level operation, Wings may find (additional pairs of) faces other than those the user wants to be join. This can happen if the 'distance tolerance' has been significantly increased to cope with mis-alignment on the geometry that the user actually wants to join.
Provided the user is fully aware of what's happening when using weld, this shouldn't be too much of a problem - I've not experienced big problems in this area..

To ensure the minimum hassle when trying to exploit weld (especially the multi face weld aspect) it's worth considering (imo) some of the (potential misalignment) issues involved between mating faces.
Using Face | Bridge for cutting apertures thro' walls.

1) A bit of 'wall' thro' which an octagonal 'porthole' is going to be cut. Make a 'porthole' reference shape (use whatever method you prefer) and extrude it a little.(I made the length 0.1 wu.) - You could even loopcut off / extract a 'custom' cross-section from existing geometry etc.
2) Since we are to be using Face | Bridge (and need equal vert counts), select the wall 'edges' and cut 2 to make 8 edges in all (to match the 8 sides of the octogon).
3) Select both faces shown, whilst they're easily visible and store this selection. (Selection | New Group, name it  - Scrooge, then deselect) - or use Select | Store Selection.
4) Select one face on the octogon, apply Face | Put On and select the 'wall' as the destination'. This should be the result. If you need to rotate / move this 'reference block' into a specific orientation / location, do it now, using standard or vector tools.
5) Recall the selected faces (Selection | Select Group, choose Scrooge - or use Select | Recall selection) then apply Face | Bridge. Geometry will be formed automatically as shown. After the bridge operation, select 2 edges (in turn) that (when added together) will provide the total wall and octogon thickness.
6) We're now going to move the face (shown selected) thro' the octogon and the wall. This can either be done by eyeballing (wireframe, ortho, if ok) - or (if need greater accuracy) use the total distance obtained from (5) and enter this figure in a tab input move. Use a vector move based on one of the octogon's axial edges if the assembly isn't aligned to a major xyz axis - or move normal if end face allows.
7) Situation after the move described in (6).
8) Select the rear side of the 'wall' and cut 2 the edges to equalise the vert count. Select the wall rear face and the octagonal face as in (7)
9) Apply Face | Bridge to these 2 faces - this should be the result. 

Although this (trivial) shape could have been 'punched thro' and shaped using other methods - this workflow will allow you to 'imprint' custom shapes based on an extrusion shaped in the form of the hole cross-section required - Even if the wall is of irregular thickness and shape.
When extruding the hole 'pattern', making the length a 'nice, easy' dimension simplifies the maths (remember stage (5)?) later, whilst adding it to the wall thickness - much easier to add 0.1 to 0.0972 than 0.17312 ? :)
Basic Face | Bridge operation
Face | Bridge - Some tunnel cutting options.
Face | Bridge - Imprinting a 'shape' and cutting a hole defined by this shape.
Object | Weld - general and multi-face welding issues.
Face | Bridge - Cleaning up after a LoopCut / 1
Face | Bridge - Cleaning up after a LoopCut / 2
Assume you want to Loopcut a torus in half (and keep both halves). (not bothering with nos here, I couldn't find any more :) )
Select edgeloops (do one, press i - similar for underside one) apply loopcut, move objects apart on Y axis.
Select both circular faces on upper object and apply bridge.
Repeat all the relevant previous ops on the lower half to finish up with the two objects shown in last pic.

If you wanted to join these back together again, dissolve all new edges formed on both objects, re-align (use Bounding Box commands if separated by an unknown distance but not rotated with respect to each other) and weld.
Similar situation as / 1. Loopcut in half, select appropriate faces, apply bridge and repeat.
Bridge used with an inverted object.

1) Create a torus and select the vert located on the +X axis. Store this selection (Selection | New group and name it - area51)
2) Deselect the vert, select whole object and apply Object | Invert (to flip normals / turn inside out), deselect.
3) Create another torus, select all the faces and apply Face | Extrude Region Normal (I used 0.2 wu here). Recall the stored vert (Selection | Select Group - pick area51- eyeball info line top left corner) and also select the vert shown here, on the outer (larger) torus.
4) Different view showing the 2 selected verts (One on inner torus, one on outer torus, both lying on + X axis)
5) Apply Vert | Bevel - keep the (2) faces (created during the bevel op) selected and apply Face | Bridge.
6) Now have a tunnel / corridor / passageway etc between the outer hull of a space station and the inner habitat ring. Go inside and have a 'nose' around - in space, no-one can hear you scream :)

There's nothing to stop you choosing existing faces / making new / purpose built ones etc to bridge a 'proper' accessway thro'. I chose this (bevel vert) method as it's reasonably easy to describe etc.

(Introducing a uniquely shaped (7 of 9?) reference object into the inner ring can sometimes help with navigation (Aim point?) when moving around inside - change to w/frame when positioning.)
Face | Bridge - Cutting tunnels into inverted objects.
Object | Weld
Some potential face mis-alignment issues.
Vert | Scale Uniform (to a point) - for re-alignment of individual verts (where necessary)
Welding multiple pairs of faces
Welding / Mirroring issues with an object having an odd number of features
Tut done with Wings 0.98.06a
Welding individual verts.

Although this isn't really associated with the Object | Weld op, I thought a brief mention was in order.
Wings can't weld individual verts, but if you want to try this method, it might be ok for some jobs.

Arrange 2 cubes so that one corner vert from each cube shares the same position.
Select both of these verts
Vert | Bevel -> zero (this creates 2 invisible faces - check info display, top left of screen)
Apply Face | Bridge (this forms an invisible bridge between the invisible faces)
Select whole object and apply Object | Cleanup (if you want - you'll get different results after smoothing this object, depending on whether you've used cleanup - try it)

A similar technique can be used to 'weld' 2 objects together by a single edge - select the edges, bevel and carry on as before.
Remember this is a Bridge operation, so there must be equal vert counts on the relevant faces.
main page
1 - 2). The basic setup. Two objects (upper displaced along Z axis), between which a bridge is to be formed. I have extruded (normal) a basic 'stub' from the lower object - the extrude distance is irrelevant - but some thickness makes the procedure easier to describe (imo).
3). Another view, with the top face of the stub shown selected. The next step (flatten) will produce a stub of the correct length (perpendicular distance between faces to be bridged).
4). Apply Face | Flatten - RMB option and choose the underside face of the upper object to define the flatten plane (use RMB to select AND continue)
5). Select any element on the underside face to define a point through which the flatten plane will pass - I chose the vert shown in yellow (use RMB to select AND execute the op)
6). Situation after the flatten op. Stub is now equivalent in length to the perpendicular distance between the faces to be bridged.
7). Another view, showing that the top face of the stub is still selected - keep it so.
8). Side view (view X). With top face selected, it's now possible to move this top face into the required position under the top object. Use whatever move commands you want, but do NOT alter it's height along the Y axis (as in this ex).
If you also want to move it sideways (X axis, here - see 10)) - it might be worth using View Y, Ortho, wireframe and using Move -> Free.
9). Side view after moving the top face of the 'stub'
10). Moving X will also keep a constant cross section.
11). With top face of the stub still selected, select the underside face of the upper object.
12). Apply Face | Bridge - both objects then become one, with wings forming the new geometry (edges)
13). Final complete object.

Comments: Whilst the bridge geometry is of constant cross section - it is not the same 'shape' as the original (inset) face formed on the lower object. Any move operation (see 8) will change the cross section, of course - so if the requirement is for multiple bridging pieces - all of which have the same cross-section - then careful adjustments along the correct axes (X,Z here) will have to be carried out - or a different method considered.
1). Overall situation - similar to before, extruded (normal) stub - but faces now at a compound angle.
2). Select end face of stub (if not already done) and apply Face | Move -> Free. Tumble as necessary (to get a better view)  and keep moving until satisfied with position (could also use Move XYZ, of course).
It will probably help to make the stub long enough to be able to 'see' where it passes thro' the face on the upper object - and therefore judge whether in the right position.
It doesn't matter if it protrudes thro' the top - as here.
3). Select the underside face of the upper object.
4). Apply Face | Bridge.
5). Although the objects are now one, the underface is now severely distorted. To regain a flat surface, each of the verts associated with this end must now be individually moved (along vectors defined by the 'bridge piece') until they lie on the appropriate plane. (Using flatten will NOT work - try it if you want :) )
I've also selected the first vert to be adjusted and hardened the edges (shown in white) for the sole reason of being able to make them clearer to the reader.
6). Tumble model (view ortho) until a side of view of the underside face becomes a straight line - the white one here (the selected vert is also shown displayed)
7). Apply Vert | Move -> MMB option. Choose any of the bridge piece edges to define the Move vector direction (shown in yellow) with RMB (to select AND execute op)
8). Drag until the selected vert lies on the plane of the underside face - shown by the white line. Obviously, the more accurately you do this, the better - zoom in as necessary.
Keeping the same view / orientation, repeat this for the rest of the verts. This is made quicker by using D (repeat last op) - so, deselect old vert, select new, D, drag etc etc.
(If the verts are hidden, press V, hold shift, drag marquee around vert (all in w/fr mode), release shift, release LMB).
9). Finished (adjusted) object.

Comments: To make the underside truly flat - and if you're prepared to accept (very) slight distortion of the bridge piece, you could now use flatten. Either way is a compromise :).
Rather than extruding from one face - you could make a separate item, Move/ rotate etc into place and then bridge/ adjust both ends. This is probably the preferred option if there is a call for all members to have the same cross-section. (use a reference piece and Object | Duplicate as necessary)
1). Somehow or other you've ended up with a mis-aligned edge and you need to re-align (shown in red).
2). Select the end vert that you want to adjust.
3). Apply Vert | Radial Scale -> RMB. Choose any of the 'good/ aligned' edges to define the axis / vector. (Shown in yellow) Use RMB to select AND continue.
4). Select the vert at the other end (the one whose position you want to keep) as the anchor / origin (thro' which the just defined vector will pass). Use RMB to select AND execute the op.
Drag to 0% (constrain by holding down shift).
Adjust this newly positioned vert with a vector move as described in previous example (if necessary)
5). Finished, tidied up object.
Tidying up mis- aligned edges.
Bridging between Non-Parallel faces (and still maintaining a constant cross section)
Constant cross-section bridge geometry.
Sometimes the requirement is to bridge between faces such that the new geometry exhibits a constant cross section along the length of the 'bridge'.
Depending on the particular circumstances, there are many ways of tackling this - a few suggestions follow.

Bridging between parallel faces.
Am assuming you want to 'drill' a circular hole through the cube, along the Y axis.

1). Cube to be 'drilled' and cylinder of the same diameter as the hole required - and also the same length (along Y) as the height of the cube. (At the moment, they've been separated for clarity reasons)
2). Select the object that's (eventually) going to be the 'hole' and apply Object | Invert (this flips the normals so's they're pointing in the opposite direction)
3). Since Face | Bridge will be used soon, we have to ensure there's an equal vert / edge count at the relevant faces - as a 16 sided cylinder is being used, both the top and bottom faces of the cube must have 16 verts to match this.
I achieved this by selecting top and bottom cube faces, pressing E (for edge mode) then pressing 4 to cut each selected edge into 4 equal parts. (note the 'inside'out' cylinder)
4). After moving the cylinder to the correct position, I selected the upper end face of the cyl (you'll prob have to tumble view to do this) - using Selection | Store / Recall Selection is also useful for this sort of stuff - imo. (have changed to w/frame for a better view)
5). Now select top face of cube and apply Face | Bridge.
6). Result after the bridge op - note how edges are (automatically) formed by wings between the 2 objects. Since this is a 'blind' hole - and not a thro' hole, select the 2 faces at the other end and do another bridge op on them.
7). Final object with a circular 'thro' hole.

Why should I bother with all of this malarky when I can do this in any number of other ways - I hear you saying?
Well, if the 'hole / cavity' etc is a complex shape - then it might just be worth considering making it as a separate item - and then using this method to 'remove' it from the main object.
Face | Bridge - using an inverted object as the 'tunnel'
8). Same cube as before (top/bottom faces pre-cut to provide 16 verts on each) - but a 'hole' object that's slightly more complex than a cylinder. (length of this the same as the cube's height - as before)
9). Final result after using the method previously described
10). Cross section thro' final object.

Note that whilst mating faces at each end need to have matching vert counts for this to work - the 2 ends don't necessarily have to be the same as each other - ie it could be 12 +12 at one end and 16+16 at the other (say).

Also, whilst I've made the 'hole' object the same length as the height (trying to keep stuff simple) - these (lengths) don't have to be equal, depending on whether you want 'concave / convex' end faces of the final object.

(It's also worth mentioning, imo, that this procedure produces completely different 'innards' from that obtained by using Face | Intrude.
1). As before - a 'wall' - or object that you want a hole in - and another object (cylinder) whose cross-section describes the required 'hole'.
(Wall 'thickness' and cylinder 'length' are irrelevant for this method)
This image shows the situation after using Face | PutOn to move the cylinder into position and the edges around both 'wall' faces have been pre-cut (by 4) to match the cylinder end face vert count (16).
I've selected the single edge on the cylinder end face to illustrate an alternative method of selecting the (hidden) end face of the cylinder.
2). Press F to select both (cyl) faces associated with the (selected) edge - we want the (circular) end face, but not the side face - click on the latter to de-select it. (eyeball info readout, top left to check what's going on)
3). Select 'wall' face and apply Face | Bridge - this will join the 2 objects together.
4). Situation after bridge op - to form the required hole the exposed end face of the cylinder has to be 'pulled thro'' the wall. Select this face.
5). Apply Face | Scale Axis -> X (with this example) and choose the RMB option. Select any feature associated with the 'rear / inside' face of the 'wall'. I chose the vert shown in yellow. (Selecting this feature with RMB will initiate execution of the scale op straight away)
6). Drag to 0% (hold shift to constrain) - this will align the (now) base of the hole with the inside face of the wall - whatever the 2 dimensions involved (wall thickness / cylinder length)
(as in first example, do a scale op along a vector if stuff isn't aligned to XYZ axes)
We know have a 'blind' hole, rather than a thro' one.
7). With cylinder end face still selected, also select inside face of the 'wall' and then apply Face | Bridge to finish the job.
8). Final object with thro' hole.

Note that Scale (to a point) -> -100% can also be used for producing 'blind' holes (simple and complex) if the reference surface is the outer face of the 'wall' (See Stap page for more details)
Modified Imprint method using scale (to a point)
(I think this is slightly tidier than the above - but use whatever you want)
Since many people seem to be after a 'Vert Weld' facility / Tool - they should now be happy souls, as Vert | Weld now exists (am writing this whilst 0.98.34 is current dev. release.)

Vert | Weld LMB option allows user to select a target vert (as well as vert being moved)- and both verts are merged / welded after the op (both verts must share a common edge on same object)

Vert | Weld RMB - moves a vert(or verts) to the location of another - without any 'welding' taking place.- works with multiple objects