Looks like you are well on the way. The normal way to do this in civi is
send your contacts an email using a checksum to a profile link (for Edit)
this should mean the profile pre-fills with their existing info
they should be able to add new info or update existing info unless that field is set to read only.
you should be able to use Profile Field type ...
It looks like force=1 url searching works for profiles too, so just provide a menu link to the page with force=1 on the end of the url, e.g. https://your.site/civicrm/profile?gid=1&reset=1&force=1