> [...] list all the pages to tell it to redirect to the home page?
Do NOT do that. Instead, yes, you can
> [...] specify different [old] pages to go to different new pages?
Each important old URL should be redirected to a new equivalent-content URL. For those old URLs which have no equivalent-content replacement, return a 410-Gone (if possible) or let the URL go 404-Not Found. Your custom error pages for 410-Gone and 404-Not Found should then contain messages explaining that the content at the requested URL has been removed (410) or cannot be found (404).
These error pages should also contain links to your home page, your site map/table of contents, your category pages, and your site search facility (as applicable), in order to help the visitors find what they were looking for.
Your redirects will need to stay in place forever, or until the number and importance of inbound links to those old URLs dwindle to the point of being negligible.
Try to plan your new URLs so that they will not need to change again. Cool URIs don't change [w3.org].
Be aware that just because a filename changes does not mean that the URL needs to change. Modern servers can be configured to map any URL-path to almost any filepath in the server's filespace. And URLs and filenames are not the same thing; they are only associated by the action of the server itself, and that association mechanism is flexible.
How you implement redirects and/or change URL-to-filepath mapping depends on what type of server your site is hosted on, your technical proficiency, and your preferences. Redirects can be done using the mod_alias and mod_rewrite modules in Apache, using ISAPI Rewrite on Windows servers, or using scripted solutions on just about any server.