&cat[[h: h in Conjugates(G,H`subgroup) | S subset h]: H in Subgroups(G)];
will create a list of all subgroups of $G$ containing a given group $S$. The main caveat here is that the function Subgroups(G) produces a list of representatives of conjugacy classes of subgroups of $G$. So after that you have to go through all conjugates of each such representative. Also, the elements of the list that Subgroups(G) returns are so-called records. To actually access the subgroup itself, you use the construction H`subgroup, where H is one such record. The command &cat concatenates a list of lists into one long list, just like the command &+list adds all the elements of the list and so on.
If you want to loop through this list, you can do something like
for h in &cat[[h: h in Conjugates(G,H`subgroup) | S subset h]: H in Subgroups(G)] do
...
end for;
or just have two nested loops, one over the elements of Subgroup(G), and one over the $G$-conjugates of each of them.
I am afraid there is no really good place to learn magma other than the online handbook and the people who already know it.