ok, for your first part, there is a bit of a wrinkle: we have no idea whether or not G is, in fact a finite group. Since the statement of the result you are asked to prove doesn't even make sense unless the index of A is finite, i will assume that [G:A] is finite, but i will make no assumptions as to whether [G:B] is finite, or whether |G| is finite.
So we have a finite number of cosets gA. note that every coset gA lies entirely within a coset of B, gB. since a finite number of such gA account for every element of G, there can only be at most [G:A] cosets of B (there could be fewer, because there's room in a coset of B for more than one coset of A, perhaps).
This shows that [G:B] is likewise finite (we proved this, see?).
now, let's consider cosets bA, where b is in B. The number of these is also bounded by [G:A], so [B:A] ≤ [G:A]...in particular, it is finite as well.
now [G:A] = [G:B][B:A] (THIS is actually what Lagrange's theorem says), therefore [G:B] divides [G:A].
i) this is OK. you could also just use the one-step test, let hN, kN be in H/N (so that h,k in H). then (hN)(kN)-1 = (hN)(k-1N) = (hk-1N).
since H is a subgroup hk-1 is in H, thus (hk-1)N is in H/N.
ii) this is good.