That is one way... There is no 'better' or best way, it all depends on your final goal and your experience...
You need a lot of CPU crunching to decode mp3s on the fly so when using a small micro you need to use a decoder chip, and the micro just funnels data between the storage device and the decoder that does all the heavy lifting... But when you get into faster CPUs with lots of crunching power like say for example ARM chips you can do the decoding in software and skip the dedicated decoder... Also the most cost effective method is to use an existing commercial player if your project suits that or one of the 'kit' mp3 players or modules...