This is just guesswork, but I suspect the issue has more to do with application invocation in Mac OS X and the way which works. As others commented, the filesystem is what makes things case-insensitive. which is a little dumb; it will only show you where executable binaries are in your shell's execution path. For whatever reason, you have /Applications in there, but this isn't really right— many applications in OS X may invoke the underlying binary in the application's .app "package", but the event is clearly triggered by the system's recognition of the associated .plist files and whatnot that make up the whole app.
So when you use which, it shows you the binary file your terminal will attempt to execute, but in doing so it leaves out all the associated app libraries and configuration files necessary to make it work in your environment. Note this doesn't apply to commands in /usr/bin or anything built out of MacPorts. So as an alternative you could also try vlc (or Mplayer!) via an external package system, but then you'll likely be opening it in X instead of using the app.
If you want to use any .app package on the command line in Mac OS X, I'd advise you to follow the instructions as listed herehere, and use Mac's fairly versatile open command instead.