I _think_ I checked it but didn't find any way to run cgi apps, only fastcgi (maybe I should check again, I'm not 100% sure about that).
Although, now that I understand fastcgi better, I guess fcgiwrap could be adapted for lighttpd, if it doesn't work for it as is (my package manager's description mentions explicitly it's for nginx).
I would say that for battery life alone, that probably wouldn't be for you yet. Regarding other apps, while they do work, it's quite a severe downgrade from android/iOS - mostly, I think, because the pinephone is so low end hardware. I do use it as my main phone, but that's only because I find hacking it worth those sacrifices. In your case, you'll probably want to wait for the Librem 5 to see how it compares, or for pine64 to release a buffed up pinephone (if they ever do that).
I went a step further and spent most of my free time this year writing CGI/C apps.
This was not nostalgia either : the reason for doing that is because I was writing webapps for my pinephone. Toying with the phone, I decided I wanted my apps to be webapps rather than GTK apps, so that I can access them either from mobile or laptop (through local network), but I didn't want to have the apps running all the time, in order for them to consume less energy (which directly translates to battery lifetime on a mobile). Turns out that CGI is perfect for that : the only process always running are nginx and fcgiwrap, then all my apps are started only on demand, for the lifetime of the request.
I did expect a big performance hit, but I was surprised it was not so bad. I guess that's because they are C app rather than written in languages which require loading an interpreter before running anything. One app that I rewrote from libmicrohttpd had actually better perfs (although it was the first time I used libmicrohttpd, so it was probably something I didn't do correctly).
Although, now that I understand fastcgi better, I guess fcgiwrap could be adapted for lighttpd, if it doesn't work for it as is (my package manager's description mentions explicitly it's for nginx).
Thanks for the advice, I'll dig that.