Seems like, I found the answer. Thanks to the article
Below is a quote from the article. I changed it a bit to use time zones used in my example.
When the AT TIME ZONE operator is applied to a timestamp, it assumes the stored value in the specified time zone (UTC in the above query) and converts it into the client time zone i.e. Europe/Moscow.
This natuarally gives an answer to the Question 2.
The value for timestamp without time zone
is stored as is.
INSERT ... VALUES (DEFAULT)
stored 2025-01-07 15:25:33.452 +0300
as 2025-01-07 15:25:33.452
Then SELECT no_tz AT TIME ZONE 'UTC' AS "no_tz as UTC",
added 3 hours to 15, and it became 2025-01-07 18:25:33.452 +0300
in Europe/Moscow
time zone.
yeah ... the more I know the more I understand how little I know