There are a bunch of different settings and attempts in there. It'd probably help if you closed OBS, opened it, did a single test stream with one set of settings that is giving the grainy/blurry issue, end the stream, close and reopen OBS, then Help->Log Files->Upload Last Log File.
I do see that you're downscaling to 720p on all of your attempts, which will always incur an unavoidable image quality loss, especially on things like text. 720p, 30fps, 3000kbps should provide reasonably good image quality. Do be aware that you will never have perfect video quality on a livestream, especially when you're downscaling the video.