1) PHP can generate images. Read the docs at php.net for more info.
2) It takes some advanced coding to do this depending on exactly what you want to do. You would have to use a database to hold data about these things. I believe you can find pre-made calendar PHP scripts online, just try googling for them.
3) Easily, but if you want to periodically do this without accessing the files, you would need cron jobs or scheduled tasks or something similar.
4) Yes, Rich has an excellent FAQ on this in the PHP FAQ forum.
5) Are you talking about a fold-up type list that shows and hides sub-lists? There are pre-made scripts that do this, but a better alternative would probably be JavaScript since you don't have to post back to the server. Check out javascript.internet.com for some examples.
Let me know if you need further explanations.
Cheers,
-Snib
Where will you be in 100 years?
Try new FreshView 0.2!
The two rules: 1) I am always wrong. 2) If I'm right, refer to rule number 1.