256-point FFT, but only need 5-6 frequencies, is there a better way?
If you wanted 1 or 2 frequencies, the Goertzel algorithm would be a clear winner.

If you wanted several dozen, then the FFT would be a clear winner, even after throwing away most of the resultant samples, due to the high efficiency that factorisation of the process gives you.

With 5 or 6 frequencies required, you're in the cross-over region. It will depend on how well each algorithm is implemented. Get or write code for both, and time them.

If you understand the FFT well enough to recode parts of it, then there is a technique called 'pruning', whereby you don't calculate any of the answers you don't need. This may not save many computation cycles as a) the factorisation means that all the results will have to be calculated for the first few rounds anyway and b) conditional calculation may be less efficient than just running the loops and doing them all. Do you want to hand craft an algorithm each time you change which frequencies you want output?