Darktable should be able to read PEFs. I have PEFs and seldom use DNGs.
There is an article on "How to drive away the evil skull" or 'Darktable and Memory' here:
Darktable and Memory | darktable
When you load an image into Darktable, it saves the event in a database, to include the thumbnail that shows up in 'lighttable', and the location of the image, and all the things you do to the image. If you were to move the image to a different location, darktable would still think the image was still in the previous location and displays the thumbnail or a skull. Other instances when you get the skull is when you delete the image outside of darktable.
Ways to remove the skulls:
1. Delete the mipmap file: ./cache/darktable then restart darktable. But you will lose all the histories of images that you had edited, unless you are saving xmp file for each image.
2. Download darktable source and extract the files. In the 'tools' directory is a file: purge_non_existing_images.sh. This will cleanup the database of images that darktable could not find (the ones you have imported into darktable but has deleted/moved at a later time).
If darktable reports a 'non-existent image' when you click on a thumbnail:
-- 'remove' the image from the collection, then reimport the image. In 'lighttable' mode, in the right panel 'selected image[s]' click on 'remove'. If you have lots of skulls, running 'purge_non_existing_images.sh' is a better option.