Barring special exceptions (namely, Protected Custom Settings), your custom objects are visible to any other package or application that cares to examine them and their data. You can expose protected custom settings though some standard API, usually as a means of controlling how they are set for data integrity. Note that normal sharing and profile settings apply to your managed package custom objects and fields as any other object and field in salesforce.com.
If you are not using custom objects (e.g. saving data to the database), you can expose your classes through the keyword "global", which grants any code from any package (even unpackaged client code) access to the methods and variables also declared as "global." They can access the code through the System.Type methods, executeAnonymous calls, and so on. Permissions to these classes can be extended at the profile level so that administrators can still control who has access to specific features.
Similarly, your custom application could perform describe calls and save the data to any standard or custom object that your app has access to, or even call functions stored in other packages that are also global or are a part of the global namespace (unpackaged classes, pages, etc). All of this information is covered in the developer documentation.