Technically, the scripts can reside anywhere as long as the users have read access to them.
In practice, client side solutions usually have a short lifecycle, and you'll certainly want to place them in a location that you can easily update. A good option is the Style Library within a site collection, which has the added benefit of caching the files. If you have internet access, you could also consider using a CDN to call popular files (like jQuery.js).
On the pages themselves, you can add the scripts to either the master page or via a Web Part, depending on the scope of your customization. Here are some explanations from my blog if you use Web Parts:
[Update] I just came across this fresh article:
Note that the above links only show some basics. There are several more ways to include scripts, especially if you work with Master pages.