RewriteConds apply only to the *single* RewriteRule that follows them. Therefore in your latest code, the second RewriteRule in each "set" of two rules has no conditions, causing an 'infinite' loop that stops only when the browser or the server gives up.
Note also that all of your rules would fail even if the RewriteCond problem was corrected, in the case where the perfectly-valid hostnames "andreamoro.co.uk.", "andreamoro.co.uk:80", "andreamoro.co.uk.:80", "www.andreamoro.co.uk.", "www.andreamoro.co.uk:80", or "www.andreamoro.co.uk.:80", were requested. This is because you've end-anchored your hostname patterns.
Furthermore, casing errors in the hostname, which are rare but possible, would also miss out the redirect.
You should also take advantage of the power of regular expressions to reduce the number of required RewriteConds in your rules from two to one -- For example, using either
RewriteCond %{HTTP_HOST} ^(www\.)?andreamoro\.co\.uk(\.|\.?:[0-9]+)?$
or
RewriteCond %{HTTP_HOST} ^(www\.)?andreamoro\.co\.uk
in your first rule would fix both of these issues.
You've also got a lot of unnecessary character-escaping where it is not needed, and missing character-escaping where it is needed. Referring to the (somewhat-simplified) regular-expressions reference in the mod_rewrite documentation would be a good idea.
Note that in general, only those characters which are "tokens" in regular-expressions patterns need to be escaped, and that generally, only the strings in the patterns (and not in the substitutions) need any escaping at all.
If you'd like to try to use a more-advanced and more-efficient approach, here's a method that accomplishes what you appear to want with far less code:
RewriteCond %{HTTP_HOST} ^(www\.)?andreamoro\.eu(\.|\.?:[0-9]+)?$ [NC]
RewriteCond $1 ^contactme/?$ [OR]
RewriteCond $1 ^about-andrea-moro/?$
RewriteRule ^(([^/]+/)*[^.]+)$ http://www.andreamoro.co.uk/$1/ [R=301,L]
#
RewriteCond %{HTTP_HOST} ^(www\.)?andreamoro\.co\.uk(\.|\.?:[0-9]+)?$ [NC]
RewriteCond $1 ^contattami/?$ [OR]
RewriteCond $1 ^biografia/?$
RewriteRule ^(([^/]+/)*[^.]+)$ http://www.andreamoro.eu/$1/ [R=301,L]
This replaces your original four rules with just two, and reduces the total number of RewriteConds from eight to six as well.
I can't tell from your post whether you may want to add a lot more "pages," a lot more hostnames, or both to these rules. So this solution is a compromise between possible additional efficiency improvements and flexibility. In particular, the RewriteRule pattern shown here matches only "extensionless" URLs -- those which do not contain a period in the final path-part. This prevents the RewriteConds from having to be processed for most requests -- for example, for image, CSS, and JavaScript file requests.
However, if you
do not have more "pages" to add, then these two rules could be made even more efficient by coding them as:
RewriteCond %{HTTP_HOST} ^(www\.)?andreamoro\.eu(\.|\.?:[0-9]+)?$ [NC]
RewriteRule ^(contactme|about-andrea-moro)/?$ http://www.andreamoro.co.uk/$1/ [R=301,L]
#
RewriteCond %{HTTP_HOST} ^(www\.)?andreamoro\.co\.uk(\.|\.?:[0-9]+)?$ [NC]
RewriteRule ^(contattami|biografia)/?$ http://www.andreamoro.eu/$1/ [R=301,L]
Which approach you take from here depends on whether you need to 'expand' these redirect rules and in what "direction" they need to be expanded -- that is, the number of additional hostnames versus the number of additional "pages" you might want to add.
The resources cited in our Apache Forum Charter, and the example threads and tutorials in our Apache Library may prove useful to you. BTW, if you are familiar with general language theory, be aware that mod_rewrite has its roots firmly planted in "lexical rewriting" and that regular expressions form the base used in almost all machine-based language parsing. While mod_rewrite itself is quite specialized to Apache servers and the Web, its immediately-underlying foundations are not.
Jim