Your balance is made up of outputs of various amounts which you've received in the past. Every time you send, some of those get combined together until you reach some amount, which is then sent to the destination, and some change returned to your wallet.
Think of outputs as bills: you received a bill of 40 and 100 in the past, and now you want to pay something worth 120. Your wallet 'burns' the 100+40 bills, creates new bills of 120 and 20, sends the 120 to your recipient and returns the 20 to yourself and you're left with the bill of 20, plus whatever else you already had in the wallet. In Monero, these 'bills' can now be created with any amount (pre-RCT, they had to be round numbers like 10, 1, 0.1, 0.01 ...).
Sweep takes all of your outputs and sends the balance to an address of your choosing. You'd want to use this to move entire balance of one wallet to another, or to clean up your wallet and combine everything into one big output (by sweeping to the same wallet).
There are normal transaction fees (per kB) applied. Of course, each additional output increases the size, and with it the fee. Another reason why it's convenient to have just a few big 'bills' instead of lots of small ones in your wallet.