The twocolumn option of the standard classes causes LaTeX to set the text of a document in two columns. However, the last page of the document typically ends up with columns of different lengths - such columns are said to be "unbalanced". Many (most?) people don't like unbalanced columns.
The simplest solution to the problem is to use the multicol
package in place of the twocolumn option, as
multicol balances the columns on the final page by default.
However, the use of multicol does come at a cost: its
special output routine disallows the use of in-column floats, though
it does still permit full-width (e.g., figure*
environment) floats.
As a result, there is a constant push for a means of balancing columns
at the end of a twocolumn document. Of course, the job can
be done manually: \pagebreak
inserted at the appropriate place on
the last page can often produce the right effect, but this seldom
appeals, and if the last page is made up of automatically-generated
text (for example, bibliography or index) inserting the command will
be difficult.
The flushend package offers a solution to this problem. It's a
somewhat dangerous piece of macro code, which patches one of the most
intricate parts of the LaTeX kernel without deploying any of the
safeguards discussed in patching commands.
The package only changes the behaviour at end document (its
\flushend
command is enabled by default), and one other command
permits adjustment of the final balance; other packages in the bundle
provide means for insertion of full width material in two-column
documents.
The balance package also patches the output routine (somewhat more carefully than flushend).
The user should be aware that any of these packages are liable to become confused in the presence of floats: if problems arise, manual adjustment of the floats in the document is likely to be necessary. It is this difficulty (what's required in any instance can't really be expressed in current LaTeX) that led the author of multicol to suppress single-column-wide floats.