Upgrading from 3 to 4 is quite a large undertaking. A lot of things have changed quite significantly. This can make the upgrade process quite daunting as a large number of things all go wrong at the same time, making it tricky to work through the issues. To make this process slightly less painful the Compatibility Layer helps to map some of the new functionality back onto older functionality, reducing the number of problems that need to be tackled simultaneously. It doesn't fix everything, not even close.
That said, a lot of the framework hasn't changed much at all, so it's entirely possible that your overrides may still work, or just need minor modifications. It's unlikely the Compatibility Layer will help much in that regard.
What's your motivation behind upgrading to 4? There have been performance problems in 4.0 so it may be better to wait until 4.1 is released if that's an area of concern for you.
If you do proceed with an upgrade, you should expect it to take some time. I highly recommend learning the ropes of ExtJS 4 by reading the guides and writing some simple examples before you start attempting to change any real code. Knowing what you're aiming for will make it much less painful.
On a positive note, once you've overcome the upgrade hurdle, almost all developers seem to agree that ExtJS 4 is much nicer to work with than 3.
In my experience, the compat layer does some things well, but if you don't follow best practices for your app, you might find that things break unexpectedly. My suggestion to folks is to not use sandbox OR compat layer, and setup some sprints in their dev cycles to do a full app update.