C'est utilisé lorsque tu construis ton objet, pour initialiser des variables par exemple.
Si t'as une classe Personne qui contient en attributs $prenom et $nom par exemple, tu pourras faire un constructeur avec paramètres qui remplit ces données en entrant par exemple $personne = new Personne("nom", "prenom);
Le placer tout en haut des autres méthodes n'a pas d'importances, mais ça fait partie des conventions, de la même manière que tu mettras les attributs au dessus du constructeur
Le desctructeur est appelé quand ton objet n'a plus de références vers lui - ça le vide de la mémoire. Tu dois pas l'appeler manuellement. A part pour éventuellement débugger, je vois pas à quoi ça peut servir d'overrider cette methode, j'en ai jamais eu besoin 