We select as our universe the language U = {a^i b^j c^k | i, j, k in N}.
Then L_1^C = {a^i b^j c^k | i!=j or j != k} = {a^i b^j c^k | i!=j} union {a^i b^j c^k | j != k} = L_A union L_B. Notice that L_A = L_2.
By DeMorgan, L_1 union L_2 = (L_1^C intersect L_2^C)^C = ((L_A union L_B) intersect L_2^C)^C, which by the distributive law is ((L_A intersect L_2^C) union (L_B intersect L_2^C))^C.
Recall that since L_A = L_2, we get (L_B intersect L_2^C)^C. By DeMorgan, we can render this as L_B^C union L_2. We have already admitted that L_2 is context-free. The complement of L_B in our universe is {a^i b^j c^k | j=k}, which is also context free. The union of two context free languages is also context free, so yes, L_1 union L_2 is context free.
Having gone through the formalities, the intuition is obvious: L_1 union L_2 is equivalent to saying that either i != j (the number of a's and b's is different) OR the number of b's and c's is the same. If you think about it, this perfectly captures the requirements of the languages: if i != j, we're OK by the second part; the only way we can fail to be in L_2 is if we already know for a fact that i = j, and we only have to worry about guaranteeing j = k.
In boolean logic: (a and b) or (not a) is equivalent to (b or (not a)).
A CFG for the language is the following:
S := A | C
A := aA | B
B := lambda | bBc
C := Cc | D | E
D := a | aD | aDb
E := b | Eb | aEb
You can get a PDA via top-down or bottom-up parser constructions.