"Öl" is the concept of "beer", "ale" is a particular type of beer which is also referred to as "ale" in Swedish with the English pronunciation.
Some words which are commonly used for "beer" but technically aren't really correct includes: bärs, bira, pilsner, lager, stor stark (the concept of the "cheapest one on tap")
gårdag also means yesterday. It looks like go-day to me. Maybe it's ancient "gone-day" or "day that go[ed]".
i morgon is sort of "on the morrow", from the time that starts with the next morning.
idag : in the [current] day.
i förrgår : the day before yesterday.
i övermorgon : the day after tomorrow.
Technically both are correct versions of the same, ie both "igår" and "i går" means "yesterday". Do note that it is not possible for all versions, ie "i förrgår" cannot be written as "iförrgår". So on it's own context, I'd use the contracted form, but in longer texts I would write it out fully.
Ex: "Let's grab a beer tomorrow?" in SMS-form: "Ta en bärs imorn?"
OK: ikväll / i kväll igår / i går imorgon (imorn) / i morgon
Cannot be only "one" word: i förrgår i övermorgon
One thing I find interesting is the mix-up between tomorrow and morning which happens in many languages, for example in Swedish "tomorrow morning" becomes "i morgon morgon" (often pronounced like "imorrn mårronn") or the other technically correct way "morgon i morgon" :-)
We always write i går etc. in the main sentences, but you can get shown igår as 'another correct answer since it's always also an accepted answer (it may be missing in a few places, but it's almost always accepted).
Unfortunately there's a problem with getting Duo's machinery to accept spelling variation in the listen-and-type exercises, so that in those, only the version written apart is accepted.
But as you say, both are perfectly correct.