I am accepting user input via a web form (as UTF-8), saving it to a MySQL DB (using UTF-8 character set) and generating a text file later (encoded as UTF-8). I am wondering if there is any chance of text corruption using UTF-8 instead of something like UCS-2? Is UTF-8 good enough in this situation?
More than that, it is perhaps the only encoding you should ever consider using.
Some great reading on the subject:
UTF-8 can represent any unicode character. As such you should have no problem with UTF-8.
In fact, UTF-8 can even represent some characters that UCS-2 cannot (UCS-2 can only represent U+0000 through U+FFFF; UTF-8, UTF-16, and UCS-4 handle all unicode codepoints)
As far as I know, UTF-8 is designed to encompass all of these earlier Unicode variations, so yes it should be fine to use it over UCS-2. See http://www.unicode.org/versions/Unicode5.1.0/ and look down the sidebar for the 5.0 book chapters; parts 9-12 should be what you're after.
If you are working with a great deal of Asian text (more so than Latin text), you may want to consider UTF-16. UTF-8 can accurately represent the entire Unicode range of characters, but it is optimized for text that is mostly ASCII. UTF-16 is space-efficient over the entire Basic Multilingual Plane.
But UTF-8 is most certainly "good enough"—there will not be corruption arising simply because you are using UTF-8 over, say, UTF-16.