Hi,
1) GeoDirectory uses it’s own templating system so the default wp templating system is overridden. single-{name-of-cpt}.php won’t work.
We use one template for each CPT and that is geodirectory/geodirectory-templates/listing-detail.php (https://wpgeodirectory.com/docs/codex/geodirectory_templates/listing-detail-php/)
Here you find an example of how to modify the detail page template without touching templates : https://wpgeodirectory.com/support/topic/modifying-the-layout/#post-46117
You can use cnoditional tags to change things between custom post type. Example:
if(isset($post->post_type) && $post->post_type=='gd_place'){//stuff for gd_place}
elseif(isset($post->post_type) && $post->post_type=='gd_mycpt'){//stuff for gd_mycpt}
else {}
2) The listings sidebar is managed through this template:geodirectory/geodirectory_templates/detail-sidebar.php (https://wpgeodirectory.com/docs/codex/geodirectory_templates/detail-sidebar-php/)
The procedure is the same as point 1
3) I don’t think it is possible, we provide our system for custom fields and I doubt ACF is able to write custom fields in GD custom DB tables.
Thanks