IPv6 explicitly forbids NAT
It doesn't so much forbid NAT as just makes NAT unnecessary. (Most of the time.) NAT is nevertheless implementable in the same way, and indeed already implemented in Linux netfilter (iptables/nft). 1:1 NAT is even a commonly suggested approach to multihoming.
Several v4-v6 interoperability mechanisms are also based on NAT, specifically NAT64 (which is a different beast than the typical "masquerading", but NAT nevertheless).
It's true that due to large addresses there are very few use cases for 1:many NAT and "port forwarding" in IPv6, but unfortunately sometimes it's actually the lesser evil when dealing with not-very-competent providers.
because the network prefix is always 64-bit
No, that is only required by SLAAC address auto-assignment, and then not by all implementations anymore (RFC 7721 removed the main reason for it to be mandatory in SLAAC). Networks with static or DHCPv6 address assignment – or L3-only VPNs – can use any prefix length.
For some reason, my ISP assigns dynamic IPv6 address for my router - it changes after each reboot and even the first 48-bit routing prefix changes
Some ISPs do that – for "privacy" or because they want to charge extra for static prefixes on a business plan.
However, make sure it's not the router's fault – it has to remember its own DHCP DUID ("client ID") across reboots.
They don't even bother to tell me how many of the 16-bit subnet is available to use.
It's generally simply all or nothing:
If you used DHCPv6 Prefix Delegation to get a /48, then you can use the whole /48 (except perhaps for a single subnet that is used on the router's WAN side – this is ISP-dependent). And the number of /64s in a /48 is always exactly 2^(64-48).
If you got a smaller prefix via DHCPv6-PD (like a /56 or /60), then you can only use that prefix – the rest of the /48 is not yours at all. For that matter, there might not even be a distinct /48 – the ISP can route at any boundary it wants.
If the ISP assigned you a prefix statically, then you also have the entire prefix to use.
If you didn't use DHCPv6-PD or some other explicit arrangement, then you have no LAN prefix at all.
With the current situation, is that practical if I move my PCs and servers to IPv6 only? And if it is, what consequences should I expect?
At first you will become unable to access a significant part of the Internet due to many sites being IPv4-only to this day, and you will eventually resort to using NAT64 or a similar transition mechanism.
NAT64 means that your PC and the rest of your actual LAN can remain purely IPv6, but you'll still need that one gateway machine that can do IPv4.
Maybe because their domain names don't have AAAA record?
Yes, and in many cases their hosting providers don't provide IPv6 connectivity in the first place. (Some sites work around this by using Cloudflare as the frontend, though.)