Olá, @Lukas.Shakesheff - love your question! Both words can be used for cute with people, animals and objects alike, but giro is more about beauty/attractiveness (giro is a synonym of bonito), while fofo is more about finding something endearing or adorable (like a sweet puppy). But they have a range of uses beyond that. Some examples below.
Giro:
O rapaz é muito giro (The boy is very cute/handsome).
Que vestido tão giro (What a pretty/cute dress)!
O filme é muito giro (The movie is very nice/good).
Que giro, não conhecia essa história (How interesting, I didn’t know that story).
Fofo:
O bebé é muito fofo (The baby is very cute).
Ele foi muito fofo comigo (He was very sweet to me).
A almofada é fofa (The pillow is soft).
Que cão tão fofo (What a cute dog).
I’d say that bonito, giro and fofo are the most common words we use in the sense of cute. There are a few other alternatives, like engraçado - it means funny by default, but it can also mean cute, pretty or interesting. Bonitinho, which @allent2000 mentioned, is fine to use, but more typical of Brazilian Portuguese.