I'm not a big fan of online play and haven't been at it for that long so I will not comment on that, but I will comment on live NL play a bit since I probably have more experience playing live than most people here. I'm sure none of this is really new to anyone but I think it's always good to talk about these things so that everyone can put in their opinions.
To me, when you play live it's all about the people at the table. I have learned that at some point, you really need to stop playing your hands. You know how they say people like Brunson could play blind, and as long as others didn't know he was playing blind he would still win? Well, the same should apply to you. In every hand, whether you are in it or not, on every street, try to think about what they have. Look at their faces, their body language, what they say, how much they bet, etc. Then when they turn over their hand you can use that piece of information to figure out their betting patterns and tells. After only a few hours, you should be able to narrow their range of hands down very well with each progressing street, and by the river you should almost always be able to guess close to their hand. Now, imagine if you could do this. It would be like them playing face-up with their cards, as opposed to you who isn't showing your hand, right? How big of an advantage is that?
But you can take it a lot farther than that. When you can guuess reasonably well what they have, you should always be thinking about whether you could pull a bluff at a certain spot, or how much they would be willing to call if you have them beat. Pull old hands out from memory and think about what they did in previous big hands. If you think they have middle pair and will call a decent bet but not an overbet, well then make the overbet if you don't have them beat. If you have someone beat and they will call an allin with top pair, well then make the allin. Knowing each person's specific tendencies and knowing their hands will give you such a big advantage that at that point, the cards won't even matter much.
When you play against good players, they will be able to read hands and notice tells and patterns as well. The key to staying above the competition is by making sure that nobody can read you. Be unpredictable and change up your style often. It's too easy to peg players as TAGs or LAGs, etc. Play similar hands differently. Checkraise with TP, then make a weak lead another time, and overbet yet another time. Bet your draws, checkraise your draws, bluff sometimes (and show), etc. and nobody will be able to put you on a made hand, a draw, or a bluff. When you are betting and raising often as opposed to calling, as you should be, people will soon start to give you their money out of frustration or confusion. But as long as you are showing down big hands in big pots you should usually come out ahead. PIck on the weak players as often as possible and use positional advantage as much as you can.