Creating an application auto generates two files, app.c and app.h ... and inserts calls to APP_Initialize in the system_init.c file, as well as APP_Tasks in system_tasks.c (ctrl click around in main.c and you can find whats going on)
There is also some #includes that go various places, and I'm sure some other behind the scenes harmony stuff.
The app.c file will automatically have near the top: APP_DATA appData; You can add your variables into this data structure, or into the app.c file wherever. The harmony examples do this either way on occasion. Other application's source files won't be able to 'see' these variables.
If you need across-application data exchange, you could use an extern ... which I've moved away from as it can create some spaghetti code and sometimes code that compiles fine, then runs and crashes for weird reasons (like inconsistent data lengths for arrays... ).
I've been making a lot of functions that look like...
... and making sure to put the prototypes in the header to make them accessible to other tasks.
not sure this is the best approach, but it's where I've ended up. Curious to see the other responses here. One problem I've had is when you want to copy an application into another project, it is now dependent on another application that's maybe not there, causing build errors.