lipo just operates on object files. You can run it on static libraries or executables. But you have to run it on the lowest-level files, not the top-level bundle, and not any include files. When you run lipo, you can specify the full path to any input files and put the output wherever you want.
But include files are a completely different thing. If you have some code or 3rd party framework that links against those libraries, then you can just link to a fat binary and be done with it. But if you need to compile your own code (or some code generated by a 3rd party product), then you have to be really careful to use the proper incude directories. Those can't be lipo'ed together. Many open source projects are built using autotools and the headers may be platform and architecture specific. This can complicate matters when Xcode is building a universal binary, but you have header paths that are different for the different architectures.
Maybe take a step back and ask why you are doing this. This is advanced stuff. Is there an easier option?