Took me many hours to get Wireguard working in a Windows server 2022 VM. After many hours i understood that large UDP packets disappeared when they should go from the guest to the host. UDP packets over 1000 bytes just disappeared. First i set MTU to 1000 in the Windows guest. That made the network work. When i switch the virtual network adapter to e1000e instead of virt-io the UDP packets stopped disappearing.
You can see the network connections names with
netsh int ipv4 show sub
You can change the MTU in windows with
netsh int ipv4 set sub <Connection name> mtu=<size> store=persistent
example
netsh int ipv4 set sub "Wi-Fi 2" mtu=1492 store=persistent