ciao!

ti do una risposta generica prima che qualcuno si spieghi sicuramente meglio!

partendo dal punto 2, dipende soprattutto dalla app stessa.
se la app deve attingere a dati in remoto, e vuoi che quei dati siano usabili anche da app per ios, windows, ecc, allora la tua strada è quella giusta.
in questo modo, puoi usare quei dati da qualsiasi altro programma, anche per desktop o web se vuoi.

per il punto uno, sinceramente non ho ben capito il tuo dubbio.
da una parte avrai le classi java che interrogano il db ed espongono i dati.
e queste stanno sul server che verrà interrogato.
dall'altra avrai le tue classi java per la app, che non c'entrano nulla con le prime.

lo sviluppo, in questi casi, si divide in due.
una volta sviluppato e testato il web service (qualsiasi linguaggio tu abbia usato che non è importante), dovrai sviluppare le/la app per interrogarlo e usare i suoi dati (e questo lo puoi fare in java per android, swift per ios, oppure javascript usando ionic, e chi più ne ha più ne metta).