Working time in Germany is regulated by the "Arbeitszeitgesetz (ArbZG)", the law concerning time spent working.
§3 says a working day is 8 hours maximum. You may do overtime up to two hours per day if your avarage working time in 6 months does not exceed 8 hours per day. There may be exceptions from this rule for people working shifts and people who are on call.
In practice that means most companies are organized so that people have a kind of account that saves "time". You do overtime this week, you may leave earlier another week to balance it. If leaving early is not possible on your job, maybe you have to save enough overtime to drop a whole shift. Different companies have different regulations though and most of them are fine. They will be stated clearly in the contract.
§9 say you must not work sundays. It also lists two pages of exceptions, like restaurants, emergency services, taxi drivers and the like.
So nobody can make you work more than 10 hours a day or on sundays in a normal software developers job. That's illegal. Doing IT support may have different rules though, after all they are on call and their work on sunday might as well be an emergency for the company.
That said, in practice in software development, nobody even knows these laws and nobody is unionized. Not because people don't know better, but because laws and unions are to protect those people that cannot help themselves. And software developers in Germany can. If I don't like my company? I quit and work for another. Companies are having trouble finding the right people, so treating your developers badly will result in them leaving.
I've been in the industry for 15 years and I have not once had a manager order overtime. Only stupid ones would even try. However, I have not met a single developer who would not have volunteered to do overtime, sometimes even over the legal limit and on sundays, just because they knew the company needed it. Not volunteering to do overtime on weekdays would probably be looked down upon by your coworkers, while coming in on weekends would be very, very rare. Working times for developers are mostly flexible in Germany and that includes that you might do 50 hours in one week and 35 in the next two. Software development is rarely a 9-to-5 job. It's more like a somewhere-between-7-and-10-to-when-it's-done job.
There are exceptions to any rule. If you are looking for a 9-to-5 job with no overtime you may want to look into heavily unionized companies or even civil services or administration. Most do work on strict regulations and most get paid like... well... lets just say most developers stay away from jobs that offer a payment calculated using the public service payscale ("Tarifvertrag Öffentlicher Dienst"). They are somewhat secure and boring and pay that way.
Sometimes you may see a clause in a contract that says "Überstunden sind mit dem Gehalt abgegolten", meaning your overtime is already paid for by your normal salary. Basically it means you won't get paid for overtime because you salary is already above average. It's your choice if you think the other parts of the contract are worth it. Remember, nobody in his right mind will order overtime in software development. You volunteer.
So
- Not by law, but by peer pressure.
- Generally, Yes. But you may find clauses saying it's already paid for in your contract. Which means No.
- Because software development is not unionized that much. There is not even a union for software developers. You will find unions mostly in companies that do other stuff and have a software department attached. Because right now, we don't need unions. We vote with our feet. A new job is just around the corner. You decide if you like the contract or not.