Here are my suggestions for the proposed tables:
Property table:
Location is part of address, thus should be included in the address. However, instead of having the address as a textfield, split it up so you have something like:
Property
PropertyID
unit
streetNumber
streetName
suburb
postCode
country (if needed)
ownerID
This is a very simple breakup of address and you might want to include street type (eg. road, street, crescent, end) and other stuff.
the ownerID would then be linked to an owner table containing all the contact information:
PropertyOwner
OwnerID
firstname
lastname
homephone
fax (idk if people still use fax...back in my day...

email
possibly the owner has a different address than the property address and you might want to add the owner's address for sending invoices and stuff.
rather than having a maintenance due and completed, just have maintenance.
Within maintenance you have a completed and nextDue date. If it is such that the next due date occurs periodically then you don't store the next due date, rather just calculate it on the fly from whenever maintenance was last carried out.
Anyway, on to your questions:
Every table requires a primary key to uniquely identify records
in my opinion it would be best to create a separate form for each type of thing you want to enter.