This is indeed a mess. But start getting creative on where to cut off some of the tentacles on this thing:
- Get version control. I recommend Git.
- Set up a local development server. Find a WAMP, LAMP or MAMP package to get you started since you're new to this.
- Find the entry points (index.php, etc.). Check your server access logs to see what these are.
- Roll up your sleeves on some regular expression black magic and dump out an include/require tree on all the files. But beware of any include( $filename ) dynamic includes. If you have any of these you'll need to do some logging on $filename to find out what possibly gets included, although the code around it should give you clues. With a little luck you can cull all your unused files this way.
- Use more regex black magic to check functions and methods are being referenced elsewhere in the codebase. There may be an IDE that can help you with this. Try NetBeans (I used it to help me refactor a C++ project once, so it may help here.)
- As someone else replied, "find out, if necessary, if some classes are used and some aren't, you can use get_declared_classes in conjunction with get_defined_vars and gettype to see which types are being instantiated." You could also just write some code to find all new statements in the code base.
- And so on... just think about how you can whittle this monster down. And try to reorganize code where you can.