When fitting a linear regression model, is it always recommended to plot the residuals? If my linear regression model provides good results on the test set, and my main goal is to predict correctly, is there still a reason to plot the residuals and check the residual assumptions? (for example, to check if they are independent)
Let's assume the regression model has good results for a relevant metric for my goal. When I plot the residuals I see that the residuals are not independent and they do not have a constant variance. When I plot them using QQ-PLOT I see that they are not normally distributed. O.K, many important assumptions are violated. Should I care about it if the model's predictions are accurate?

"The model's predictions are accurate" - If by "predictions", you mean "predictions from real-world data", then this is something that you almost certainly do not know for sure.  Why? Almost always by "test set", we mean a set of data that have been bootstrapped out of our training data.  So, if our training data aren't perfectly representative of data that your model will encounter in the wild (which is what you're going to be applying your model to, if prediction is your goal), then neither is your test data.  Almost surely your training data are not perfectly representative of data you will see in the wild.  Is it good enough?  You have to check for these sorts of things.
Your overall perspective on the model evaluation process is backward.  We need to be scientists about the matter.  Being a scientist about the matter means that you're not looking for evidence that your model is right... it means meticulously looking for evidence that your model could be wrong.  The depth that you have delved for ways that you could be wrong is the true test of any hypothesis.  Your hypothesis is "this linear regression model will do a good job predicting future Y from future X."  You want to look in every corner for things that might suggest that this hypothesis is wrong.  Obviously, you cannot check every corner, because there are infinitely many corners, many of which are so dark that you cannot see into them.  Still, you should check the corners that you can check.  One of those corners you check by holding out a test set.  This is usually to check the "overfitting" corner - Is my model just regurgitating the training data, or is it actually doing some kind of generalization?  However, there are many other corners.  One of these that is extremely common to crop up in real life is the "data isn't representative" corner.  This means that you trained your model on the data that you had, but the data that you had isn't a very good picture of all of the data that the model sees in real life.  Checking out the residuals is one way to convince yourself that this might be a way for your model to fail (and remember, you are meticulously looking for ways that your model can fail).
So, when you see this sort of thing:

You should be thinking to yourself "okay, well what happens when my model is confronted with $x=2.5$?"  Why?  Because the data "curves", and the model doesn't (i.e., my residuals aren't independent of X).  If your model might well be confronted with $x=2.5$ in the real world, then your training data isn't very representative of the real world, is it?  You can see this because we don't have anything like $x=2.5$ in our training data.  If you don't have anything like $x=2.5$ in your training data, then you don't have anything like it in your test data either.  Bootstrapping test data out of training data doesn't fix problems with your training data!
Anyway, the point here isn't that you should or shouldn't look at the residuals.  The point here is that you are taking entirely the wrong perspective on how to evaluate your model.  You shouldn't be focused on finding evidence that your model is good.  You should be focused on finding evidence that your model is BAD!  If you look really really hard for evidence that your model is bad, and don't find any, then and only then should you begin having confidence that your model is "good".  Checking out the regression coefficient is one way to do this.  Checking the residuals is another one of many ways to check for "common" pitfalls where models turn out to be "bad".
