The post type registration arguments are difficult to fully grasp. Very few people truly understand all of them, I’m certainly not one of them, but I’ll do my best ??
The ‘public’ argument doesn’t have to do with logged in users. It’s more of a shortcut argument for several other arguments ($publicly_queryable, $show_ui, etc.). If you set those individually, I don’t think ‘public’ does much by itself. If you do not set them individually, they inherit the ‘public’ value. Those other arguments control the visibility of post-like features to everyone, even admins.
If you want your CPT to behave like posts, set ‘public’ to true. Otherwise, it’s only used in the background by your code. There will not be any user interface or anything.
To control who can do things with the CPT – read, edit, delete, etc., use the ‘capability_type’ and ‘capabilities’ arguments. ‘capability_type’ is often the CPT slug. ‘capabilities’ is available to fine tune capabilities if the default constructs from ‘capability_type’ are not acceptable.
So if your ‘capability_type’ is ‘foo’, you’ll need to add read_foo, edit_foo, delete_foo, etc. to appropriate roles or users for anyone to be able to do anything with the CPT. If you do not supply any argument, the ‘post’ capabilities are inherited. If, say ‘read_foo’ is an undesirable capability, you can use ‘capabilities’ to map the CPT equivalent of ‘read_post’ (e.g. ‘read_foo’) to something else.
If registered with ‘exclude_from_search’ as false, you CPT should show up in search results, though in some cases some folks have had to explicitly add their CPT to the ‘post_type’ query var in ‘pre_get_posts’. It may be they didn’t register correctly. To exclude from search, just register with ‘exclude_from_search’ as true.
Search result links are configured by your theme’s search.php template. The links are typically to the post’s single page permalink. Thus your CPT search results will be the same.
Probably the best thing to do is register a test post type and play around with the various arguments and see how it behaves on your site when you alter one argument or another.