I went through pretty much the same process as yourself when I first started. I started with a web wallet, simply because it was the easiest and didn't require much effort. Then I delved further into the Bitcoin world and discovered that if your web wallet does not actually give you the private keys (looking at you Xapo), then you effectively don't own any Bitcoin.
As a previous poster mentioned, it is effectively like the web wallet just hands you an IOU and you have to trust the web wallet to honour it when you want to do something with "your" Bitcoins. Also, there have been reports on this forum of users having their Xapo wallets randomly "locked". It seems they have some fairly obscure clauses in their Terms of Service that allows them to lock down your account if you do things they don't approve of. One of these is gambling... I don't know why, but if you send or receive money from online gambling sites using Xapo, there is a good chance your account will be locked.
Anyway... after deciding that web wallets were basically just useful for collating small payments into larger amounts to avoid "dust fees"... I went hunting for a proper wallet. I decided against core, because 1. I didn't have the time nor space nor bandwidth to download the entire blockchain and 2. I wanted something a little more mobile.
I had considered Electrum, because everyone says it is great and I like the idea of having both a desktop and mobile client that would "sync"... but the Electrum Android client... well... IMHO it is rubbish. The UI is terrible and just doesn't seem to fit Android at all. It was slow and painful to use on my device. Granted, it isn't a Quad Core with 4gigs of RAM, but still... Electrum isn't exactly 3D gaming either!
I ended up settling on Mycelium. It just works. It is relatively lightweight, the UI is pretty friendly, it doesn't require an account or anything anywhere. It is a HD (Heuristically Determined), wallet, so you get all the benefits of the automatically "changing" wallet addresses, with just a single Master Seed to worry about. Plus it lets you import other private keys... create "watch only" addresses using public keys etc.
It isn't perfect... I'd prefer if it asked for the PIN code when you bring the app up from the foreground like my Internet Banking app does (I'm considering setting up an android dev environment to try and hack it in and recompile the code)... and I'd like if it let you specify fees manually, rather than the 4 preset fees they currently have (again, considering hacking the code to change this)... and I'd like to be able to manually generate the next address. At the moment, you have to wait until an address receives a payment before a new address is created. I'd like to be able to manually "force" the next one to be generated, so I can give different addresses out as required without waiting or having to reuse an old address etc. (Sadly, I think this is beyond my coding skills)
Anyway, other than those 3 relatively minor annoyances... I have had no issues with the app so far... And I hear there is supposedly a big upgrade/update that is coming. So, hopefully that happens in the not too distant future and the app becomes even better