Is there a difference in available CPU & RAM between a web app and a compiled one?
You web app is running in the context of the browser and it's extensions, the browser requires some memory and CPU cycles for its housekeeping chores. That memory and those cycles are therefore unavailable to your application. On a fully loaded desktop the fraction of the CPU cycles or memory needed for browser housekeeping is tiny relative to the available cycles and memory. On a low-end smart phone it may have a more significant impact.
Is there a large efficiency difference between a program written in (an interpreted language) JS versus one written in (a compiled language) C++?
Ask yourself these questions:
Do I needed unconstrained access to the machine's hardware?
Do I need to replace functionality of the OS's or the language's runtime libraries
with custom behavior of my own design? For example, do I need to turn off the standard memory allocation system and implement my own?
Am I running a computation so involved that it will be difficult to complete it in a timely fashion without using every last jot and title of the system's capacity? Think about Bitcoin mining, protein folding simulations, or real-time process control.
If you answer yes to any of these questions you may need to use assembly, C, C++, or some other system programming language.
Computers don't get bored or tired, so it doesn't make sense to worry about efficiency for its own sake. It only becomes a concern when it becomes so inefficient that the performance constraints of your program can't be met. Back in 1987 just putting up a few windows, buttons, and scalable fonts required almost every cycle a CPU could provide, so compiled languages were the only game in town. Nowadays, if the main job of your program is to interact with a human dragging windows and clicking buttons, your computer is going to spend most of its time twiddling its figurative thumbs, and other concerns, like development time, become more important.