The line breaks are optional. I prefer to do it that way to make it easier to read. As for the (), certainly use them with the And/OR combinations as I mentioned earlier, apart form that it's an aid to readability again.
I would recommend using the join syntax that I used.
Even if you are just using normal JOIN it's better to have
SELECT x,y,z FROM a JOIN b ON a.id = b.id WHERE something
rather than
SELECT x,y,z FROM a,b WHERE something AND a.id = b.id
as it defines the relationship structure separate from the selection criteria and IMO afain it's easier to understand what's going on.
Also, I'd normally use table aliases (sometimes they are necessary) as an aid to readability - the query is less cluttered. If I hadn't been copy/pasting your code I'd have written it like this
SELECT * FROM users u
LEFT JOIN parent p ON p.owner_id = u.user_id AND month(p.parentdob) = '3'
LEFT JOIN sibling s ON s.owner_id = u.user_id AND month(s.siblingdob) = '3'
LEFT JOIN children c ON c.owner_id = u.user_id AND month(c.childdob) = '3'
WHERE (month(u.spousedob) = '3')
OR (p.owner_id IS NOT NULL)
OR (s.owner_id IS NOT NULL)
OR (c.owner_id IS NOT NULL)
One last thing - avoid SELECT * unless you really do need to pull every column. Specify the columns you need
SELECT u.name, u.spousedob, .... FROM ...
The less data you fetch the more efficient the query, and again, it let's the reader see what the query is really doing. (If you had a 2Mb blob image in each record you bee pulling those too in every record even though the birthdate query doesn't need them.)
Hope that jelps