lxd-p2c should work fine to convert a VM or physical system into a container.
If you want to move an existing disk image into a LXD virtual machine, the way I’ve been doing it so far is by creating an empty VM with lxc init blah --vm --empty then replacing its disk image with the one from the existing VM.
Note however that LXD’s machine type may not match what you have and so may not boot. LXD only supports Q35 (recent Intel virtualized platform) and UEFI.
If your VM relies on older virtualized hardware (doesn’t support virtio for example) or if it’s using a legacy BIOS rather than UEFI, it will not boot under LXD.
Also, if your VM is UEFI but not secure boot capable, you’ll need to set security.secureboot=false so that it will boot.
Most users won’t have a need for that vm profile from the initial announcement as the images on our image server just work fine out of the box now.
So if you use ubuntu:18.04 you still need the profile to get cloud-init to behave.
If you’re using the upcoming 20.04 image at ubuntu-daily:20.04, it will work out of the box and same goes for any images from images: like images:ubuntu/18.04.