I don't believe there is a "best" place for custom CSS.
It depends on what are your options, really.
Microsoft tends to tell you to create CSS files in the Style Library of the root site (based on the many customization tutorials they have).
If you can/need to deploy a solution, you can use the hive and unghost them if you need using SharePoint Designer (best when you need to respect the deployment lifecycle).
There are actually more options, like using a CEWP to deploy styles or scripts to a single page without using and IDEs.
I tend to use an external CSS file whenever I can and it makes sense (more than 2 or 3 styles), otherwise I embed them in a page by editing it in SPDesigner or creating a CEWP.
Then reference the file in the master page, page layout, or the page itself, whether you want to reflect the changes in the whole site, or just a specific set of areas.