Create a new virtual machine and set the window size to 720x1440 with 2x scaling (or just 360x720) which is what the Pinephone uses. Everything else is the same as desktop Linux, just compiled for ARM.
1. Buy a device, https://wiki.postmarketos.org/wiki/Devices#Main . I suggest the PinePhone if you want something with decent power management in the next few months, or PinePhone Pro if you're willing to wait a few months for decent power management.
I mean...that's why I said "more or less". There are of course differences, but a lot of app development can be done on a linux system and a cross compiler.
Signal and power management make or break a phone. My Nokia N900 makes for an excellent Linux phone (I have been unironically using it as my daily driver for communication, and the battery has been replaced recently too), but what really kills it is that its battery life is very unpredictable.
Sometimes it lasts 36h on a single charge when in standby, and sometimes a fraction of that. I cannot trust it to last me a whole day without a charger.
Other older phones that I tried last year (ranging from very old Nokia's to Blackberries with 3G) all had issues with call quality and even with random signal loss. I couldn't reliably stay connected with my family, which frustrated everyone.
Your application/mobile OS likely uses mobile data in some fashion, definitely uses up some CPU cycles (in foreground or background), may trigger high-powered modes in the cell radio through its usage patterns, or might miss incoming messages entirely. Testing on real untethered hardware, even as a final check, is needed to see that what you built isn't a frustrating paperweight that cannot fulfill the function of a phone.