Long codes are intended only for person-to-person interaction. This includes normal texting between two people, group SMS applications that join multiple users together, or a forwarding application (someone sends your app a message, it forwards the message to your phone). There are content restrictions as well - you cannot transmit information related to political marketing (news is acceptable), promotion or facilitation of crime, alcohol, tobacco, guns/weapons, illegal drugs, pornography/sex/prostitution, violence/death, hate, gambling, religion, or specifically mentions a wireless carrier (even for parody).
Short codes, on the other hand, are open to all types of applications, though the same content restrictions apply. They do have stricter requirements in terms of the user experience, however. Applications using shortcodes must be Opt-In and must confirm via text that the user has opted in; they also need to respond to specific keywords like STOP and CANCEL to unsubscribe (as well as HELP). In addition, you need to predefine what your application will say and never deviate from it.
If an application is utilizing a long code for any other function besides those listed above, especially large volume marketing or promotions, there is potential for the traffic to be deemed inappropriate for a long code and blocked at the carrier level. Small applications without commercial orientation, like a personal reminder app, are unlikely to generate enough traffic to be flagged by the carriers, but larger applications with significant traffic should definitely consider a short code or risk having their application blocked.
Note that low volume application testing is also likely to be ignored; if you wanted to verify your Tropo application functioned properly before acquiring a short code, you could test utilizing a long code, but again, only if the traffic volume is minimal.