Yes, always charge a pet fee. I consider it as an addition to the deposit.
1. $300 per pet. Only 2 pets allowed, so a total of $600.
2. I take it just at the beginning.
My pet deposit is fully refundable at the end of the lease if the property comes back clean as a whistle. I believe this provides incentive to the tenant to control their pets.
I will usually do an inspection at the time that the tenant gives me a 30 day notice to vacate. That way I can identify and spot things that need to be fix/replaced and tell the tenant to take care of these things prior to move out. If they take care of them beforehand, that's less that the pet deposit may have to cover, and they are appreciative in getting more of their deposit back.
Also, here in AZ I am allowed to take 150% of a month's rent as a security deposit. So I calculate my security deposit as 150% of rent minus the $600. That way if I have a tenant that has 2 pets, I still abide by the law.