The mbstowcs and mbtowc functions are supposed to be Standard C (but they may be part of the newer Standard, in which case older libraries might not have them). They should be declared in <stdlib.h>.
On a UNIX-ish machine, type "man mbtowc" on the command line to get info about it.
If I understand correctly, all the wc stuff is what you use to manipulate Unicode strings within your program. A multibyte character file is not in Unicode, but a set of (often) single-byte characters and escape codes, where the escape codes change "states" of the file, and state determines the meaning of each byte. In short, it's a more compressed representation than straight Unicode, especially when your data has large sections that use the same character set.
So you read the multibyte character file into a char buffer. You use mbstowcs to convert the multibyte character string (char*) into a wide character string (wchar_t*).
Once you have a wchar_t representation of your file, you can work with it in your program using the wc library stuff mentioned above (a lot of which is Standard).
And, of course, there are the wcstombs and wctomb functions for changing a wchar_t* into a char* of multibyte characters you can write out.