Where it rapidly can get dicey is optimizations related to rendering, and that's also commonly a massive "unknown" up-front. This includes "GPU" optimization itself (ie shading) and also optimizing for CPU=>GPU pipeline/bandwidth -- both of which are difficult to abstract and/or the abstractions that exist tend to leak a lot.
The latter is the area where I've personally experienced the most pain and those situations are often full of unknowns & full days of developer time spent working on/debugging platform-specific issues from an actual Linux test machine. Having to devote full days of developer time to Linux-specific GPU-related debugging is painful -- specifically because it rarely generalizes or improves experience on other platforms. For a small/indie team, it's extremely expensive because of the big "unknowns" that exist (ie lack of familiarity & uncertainty of outcome, etc), and especially because of the opportunity cost/the time spent is likely to benefit <2% of customers, at best, which is a very difficult pill to swallow unless you've got a really big pie to begin with!
I'll end the same way that I began: Proton very good, great even! =D