To answer your first question, that's simple, encrypt the file. Use a symmetric key that is shared between the application you use and that your friends use. Only someone with the key can read the data. Where you store the key depends on how paranoid you are.
The simplest is simply to hardcode the key into the application. If you're concerned about hackers accessing it however, that would be nowhere near secure enough.
To answer your second question, there's two components to what you're storing from what I understand of your question: a picture, and data. The picture you should store as binary, probably PNG format would be the best option. The data I'd store as JSON. You's want some way of bundling the two sets of data to each other, and the whole set of data into a container. Plus some compression for the JSON.
So that screams for a ZIP file, and conveniently, you can also encrypt ZIP files.
So, I'd create two files, with the same name, but different extension for each record (e.g. Record1.json and Record1.png), and place them all into an encrypted ZIP file using SharpZipLib or similar (https://github.com/icsharpcode/SharpZipLib/wiki/Zip-Samples).
You didn't really indicate how many records we're talking here, if it's thousands you might want to create a directory structure using a search tree for the record index. So, if for example you search for records by the surname, you'd use the first letter or two of the surname as the first folder name, to speed access and reduce the time to iterate all the records.