This is an issue with any crypto system that does not protect integrity, such as with a signature or hmac. You see, encryption and decryption are just mathematical operations. You can always perform a mathematical operation on a blob of binary data, and will always get a result. Encrypting an decrypting operations do not error out because the data is modified.
The specific impact of modifying the ciphertext depends upon the mode of operation and the data modified. There is a famous attack where twiddling a bit in the old ATM (automated teller machines) protocol protected by DES would change the value of a transaction - deposit an unknown number of dollars instead of the amount you typed. The attacker wouldn't know what the result would be, but the attacker would deposit a small amount of money and the system would have a large max value, so odds were that a 'random' change to the amount would result in a larger deposit.
Swapping blocks and the other attacks you reference are intended for known meaningful changes. The root cause is still the same - lack of protecting the integrity of the message.
Now, there are a few exceptions to this, in the form of GCM, XST and a couple other newer encryption modes. These modes include the integrity check as part of the algorithm, instead of requiring you to implement an integrity check, yourself.
The initialization vector makes two values encrypted with the same key encrypt to different values. Without the IV, when you reuse keys and resent the 'same' message you would get the same ciphertext.