It looks like you did not fix the extra underscore, that might be why you aren't able to boot.
If you want to make it a top-level subvolume (instead of a subvolume of /), you can either set it up from a live environment or--perhaps easier--mount subvolid=0 somewhere.
sudo mkdir /mnt/top-level_subvolume
sudo mount -o subvolid=0 /dev/sdx /mnt/top-level_subvolume
cd /mnt/top-level_subvolume
From here, ls should show you your highest-level subvolumes (@, @cache, @home, etc). Go ahead and make your new subvolume.
sudo btrfs subvolume create @opt
This is right. There are a few different ways you can do this, but one fairly simple way would be to mv your existing directory:
sudo mv /opt /opt_old
Make a new directory:
sudo mkdir /opt
Mount the subvolume there:
sudo mount -o subvol=@opt /dev/sdx /opt
Copy all the stuff into it:
sudo cp -ax --reflink=always /opt_old @opt
When you are ready, you can delete opt_old. I would double-check the files are in the new directory and working as expected, everything survives a reboot, et cetera before you do.
Hopefully if I made a mistake someone will chime in with a correction before something gets broken.