Add user custom fields and make editable on frontend

ACF has a built in way to do this. Its acf_form(). Essentially it lets you build a form on the frontend that will update your custom fields.

Here is a basic example from their site. Note the use of acf_form_head(), which is needed to actually save the data.

<?php acf_form_head(); ?>
<?php get_header(); ?>

    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">

            <?php /* The loop */ ?>
            <?php while ( have_posts() ) : the_post(); ?>

                <?php acf_form(array(
                    'post_id'   => 123,
                    'post_title'    => false,
                    'submit_value'  => 'Update the post!'
                )); ?>

            <?php endwhile; ?>

        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

As stated in one of the comments, this tutorial walks you through basically what you are trying to do.