The tenses usage is different between English and Italian. In English you'd say "she has done it" to underline the current state of the object (it has been done), and it's actually a little off to say it while specifying a time (i.e. she has done it on Sunday isn't correct), while you'd say "she did it" to underline the action happening in the past. In Italian you say "lei ha fatto" to underline that the action isn't far off in the past, while "lei fece" to underline that it happened in a remote time. So it's correct that "cos'ha fatto domenica" is translated "what did she do", but depending on the context in other sentences you might find "what has she done" being better.
I think not, as it takes avere as an auxiliary verb. Although there is an exception even there if there is a direct object pronoun (has he done it = l'ha fatto/a) the ending changes to agree with the gender and number. Those participles taking essere ( e.g. sono venuti/e ) always change the ending.