A contract should cover all possible scenarios ‘just in case’. Things may be going well with your client now, but putting it all in writing will hopefully ensure it keeps going well, and that you have something to fall back on if it doesn’t.
Using a contract shows you’re a professional, and you should use one even if (especially if!) it’s a friend who is hiring you.
Use templates you trust and adapt them to suit your project, and get a lawyer to look it over if you freelance full time or are doing big projects; just to be sure.
Design your contract so it is clear and concise, and make it easy for your client to sign it. The less friction there is, the more likely it is they will read your contract and have a better understanding of the process.