A staff engineer is a level above senior. What they do is make them themselves more valuable than the regular engineer who has been around for 10+ years. As you get experience there is diminishing returns, so most engineers will not make a staff level (though there is plenty of title inflation and so you will find many). A staff engineer needs to know the code (or whatever they engineer) well, but they don't normally write a lot of code. They tend to spend more time thinking about the larger problems (including forcing through upgrades nobody wants to pay for), mentoring juniors, and figuring out the hard architecture problems (software architects have a role, but in my experience they rarely actually create architecture despite the name - possibly because what developers need of architecture is different from management?).
Staff level developers are trusted to figure out what needs to be done without direction. When they are given direction it is figure out how the other engineers break this problem up and do it - typically not do it themselves.
If staff engineers are doing something it is not important to any project. So nobody feels bad about interrupting them if they need help or something urgent comes up. (this also means you are developing your senior developers into staff engineers by giving them responsibility)