Hola,
Es que en ese if se mira el $HTTP_POST_FILES['userfile']['type'], que es el tipo MIME del fichero, no la extension. Ahora mismo no se los MIME de los txt y doc, pero supongo que seran text/plain y application/ms-word, o algo parecido.
Sobre lo de guardarlo en otra carpeta, si miras el manual de move_uploaded_file() (
www.php.net/move_uploaded_file), veras que en el segundo parametro ademas del nombre puedes especificar la ruta donde quieres guardarlo.
Saludos.