I will only argue about 3), since this is the case you're having troubles with.
Consider $\{ 0^i 1^j \mid j \le i \le 2j \}$ for a moment.
You can get a CFG for this language by noticing that you can "match" each occurrence of a $1$ to either $1$ or $2$ occurrences of $0$s (in such a way that every occurrence of $0$ is matched exactly to a single occurrence of $1$).
$$
S \to 0S1 \mid 00S1 \mid \varepsilon
$$
To get a CFG for $\{ 0^i 1^j \mid j < i < 2j \}$ you just need to ensure that a) there is at least one $1$ matched to a single $0$, and b) there is at least one $1$ matched to two $0$s.
Since using the order of the rules is irrelevant and using $S \to 0S1$ followed $S \to S \to 00S1$ generates $3$ zeros and $2$ ones, we can simulate the execution of these rules as the last step each possible derivation by replacing $S \to \varepsilon$ with $S \to 00011$. To summarize, the final grammar is:
$$
S \to 0S1 \mid 00S1 \mid 00011.
$$