Terminal: open-command -a flag - Why isn't it necessary for some software?
You are doing two different things here.

The text one is open a file with the application that open associates with the file extension.

The Terminal one is you trying to open a named application. 

What open does is first look, using the full path name, for the file that is named, as you only give a file name it is a relative path it looks for that file in the current directory. (Thus for Terminal.,app it says it can't find the file and then gives up). When it has found the file it then searches for the default application for the file's extension, then sees if the application is running, if not it starts the application. Finally open sends a message to the application to deal with the file. 

Passing -a to open tells open to use the named application, it searches its database for previously opened apps and so does not need the full path to find Terminal.app