Can this be considered a good practice, or should I simply save
pictures in the public folder? Will I run into performance issues by
doing so?

It is not suggested practice, because you read the file and re-generate it, that will take process time and load the server, but that said all depends on how many requests, image size, etc. I used this practice to secure/protect images/files from public access, so only Authenticated member can access the images/files as it is in this answer. Again depending on file size, number of requests and server specification, I have used it for while and I have had no issues with performance, it has worked fine (my server is 512MBMemory, 1 CoreProcessor, 20GBSSD Disk VPS solution). You might give it a try for while and see.

Symbolic link solution

This solution won't affect performance, but you need to document the solution in your internal documentation, in case you move your setup to new provider or in case you need to re-link to the storage folder.

But if you still wish to have the full solution for returning image from storage folder, first of all we need to install Intervention Image for Laravel, I am not sure if this done already or not. if you have install it continue here, but if not follow the last part of this answer and than continue with Laravel solution.

Laravel solution

As said we assume your intervention works, first of all you need to create a Route. The Route will forward all image request access to our Controller.

Create Route

Route::get('profile/{person}', 'ImagesController@profilePicture');

After creating a route, we need to create a controller to take care of image requests from our route.