Your library preparation can definitely affect the FPKM expression values (stranded versus unstranded, polyA versus ribosome-depleted, etc.). Your quantification can also vary (reference set, unique versus multi-mapped allowed counts, etc).
So, I would agree that the values from different are not perfectly comparable, but I think there are certain characteristics that are common enough that it might be useful. For example, the FPKM value is calculated independently for each sample (so, you don't have to worry about differences due to the overall set of samples you are comparing - for example, normalized counts will change for a sample, depending upon which sample has the fewest counts, or possibly other factors).
In terms of the correction, it is extremely important that the factors you want to adjust are randomized. Otherwise, I would be critical of the results, even if the program ran without reporting an error message. I would also recommend you visualize expression before and after adjustment, to make sure there aren't any weird effects that might be due to over-fitting. You can also try doing something like centered expression among each group you want to adjust (prior to visualization) as a sort of baseline comparison, but then you definitely have to focus on relative (rather than absolute) expression.
Similary, in terms of the batch effects, you might want to play around with the UCSC Xena Browser. They use normalized counts instead of FPKM values, but I would argue visualizing things like GAPDH can help show if batch effects are theoretically possible (although you definitely need randomization to confirm it is really a batch effect and not a real difference that could be incorrectly adjusted, such as a gene that really varies between tumor and normal, but one study only has tumor samples and the other study only has normal samples).
In terms of a Xena Browser example that you can try out:
1) In the far left column, select "I know the study I want to use" and enter “TCGA TARGET GTEx”
2) In the second column, make sure the "genomic" radio button is selected. Enter a gene like "GAPDH" or "EFGR" and press enter (and then click "Gene Expression" and "Done," for each gene).
3) In the next available column on the right, similarity add all 4 "phenotype" variables that are provided by default (although you can select more, if you want).
4) Now, above the columns, you can enter text (where it says "Find samples..."). Try entering something like "lung" and click the upside-down triangle hamburger icon to select "Filter"
5) Click the icon with the 3 bars in the upper-right corner to plot gene versus phenotype expression (you can also then click the icon with 3 full bars to go back to "column" bode).
Again, you would really want to see if the GTEx normal and TCGA adjacent normal were similar (and the tumor samples can't really be randomized among the GTEx samples), but I believe this gives you something to think about.