what is the best way to store user created data?

You should store additional user data in wp_usermeta table. For that, use add_user_meta() function. Here’s an example of how you can store locations

$location = array('name'   => 'example location name',
                  'street' => 'example street name',
                  'note'   => 'example user note'
                 );
add_user_meta($user_id, 'location', $location);

You can store as many locations as you want. To retrieve the locations use get_user_meta() They will be returned as array of locations.

$locations = get_user_meta($user_id, 'location');
foreach($locations as $location) {
    echo $location['name'];
}

To update a particular location, you can use update_user_meta(). But it’s a little tricky as every location will have the same meta_key named location. So, you need to also send the previous meta_value to let WordPress know exactly which row you want to update. Here’s a example to update a location with street name abcd street

foreach($locations as $location) {
    if($location['street'] = 'abcd street') {
        $new_location = array('name'   => 'Modified location',
                              'street' => 'Modified street',
                              'note'   => 'Modified Note'
                             );
        update_user_meta($user_id, 'location', $new_location, $location);
    }
}