Not a comprehensive answer as I won't claim to be an expert on this and your problem is posted in a generic way, but solve will get you solutions at least for easier cases, and you may want to use the option explicit to see if you can avoid the RootOfs.
factor() may factorize your expression (which of course gives you at least some of the roots).
If your indeterminates are functions or expressions themselves, none of these work in a direct way. One way to use them is freeze/thaw like so:
(a generic made-up example where f(t) can be a function or expression). Another may be frontend, but I always get lost in its syntax, and therefore I don't like it. If freeze() looks too complicated or unfamiliar to you, you can also just subs a unique name for the function, do your thing, and then substitute back.
Do note that polynomials of 5th or higher order are not solvable analytically in general. you need to resort to fsolve in those cases and be careful of getting the solutions that actually apply to your problem out of the multitude of possible solutions. fsolve can be helped along by specifying initial points, points to avoid, or ranges within which to find the solution.