During a regression task, I am getting low R^2 values, but elementwise difference between test set and prediction values is huge
This line looks wrong to me:

diff.append(100*np.abs(y_pred[i]-Y_test.values[i])/Y_test.values[i])


Shouldn't the abs be around the entire calculation?

diff.append(100*np.abs((y_pred[i]-Y_test.values[i])/Y_test.values[i]))


That aside, the RMSE calculation looks accurate and is in the scale of the error, and the $R^2$ is great, so all things being equal, I would lean towards looking for something you did wrong in assessing the errors.  That's why I was focused on your calculation.

One other thought, have you checked for outliers?  This could affect some measures and not others as drastically.