Derek,
Let me be the first to say I understand your agony - I remember my first stumblings into Object Oriented programming back in my Pascal days, Borland TP7 had just been released and the previous version had been the first to have object support.
It seems to me like you understand the concepts, but have questions about 'why'... I may be wrong in that interpretation of your message, but that is what I'll elaborate upon.
Classes (objects) make things more self-contained. Any good programmer already contains related functions within seperate library files - which is why you can #include things in C, require("") them in PHP, and use() them in other languages. Object orientation just takes this one step further.
Let's use a building as an example object, and functions that can be performed in that building as it's methods.
Our building has doors, as some buildings are might to do. I personally think that we should be able to open and close them, so say we have a function called open_door() and close_door() within the class. As they are inside the class, they are methods of the object.
Now, your question, as I read it again, pertains to why do it this way, instead of having the functions globally accessable. That becomes fairly simple, now - why should we make everything be able to call open_door(), when the only object that is going to use it is building? say you had an object called bicycle - there would be no use for it to open_door(), because it has no doors!
OOP is all about encapsulation.
Encapsulation makes your code cleaner, tidier, more legible to those who have eyes for such things, and basically easier to deal with.
I don't think I've ever read a good tutorial that explains the 'whys' of OOP - so I can't point you at any. But I hope my little random escapade helped explain a little.