Memory usage in AnalogBinLogger of SdFat library
how will a file-reader differentiate between a 10-bit value taking 2
  bytes and two 8-bit values?


The file AnalogBinLogger.h, which comes with the example sketch you
mentioned, contains the following:

// First block of file.
struct metadata_t {
  unsigned long  adcFrequency;     // ADC clock frequency
  unsigned long  cpuFrequency;     // CPU clock frequency
  unsigned long  sampleInterval;   // Sample interval in CPU cycles.
  unsigned long  recordEightBits;  // Size of ADC values, nonzero for 8-bits.
  unsigned long  pinCount;         // Number of analog pins in a sample.
  unsigned long  pinNumber[123];   // List of pin numbers in a sample.
};


Thus, the file reader just needs to be aware of the format of this first
block, and read the recordEightBits field in order to know whether
this is 8-bit data or not.


  Is SdFat's buffer also in SRAM?


Yes, that's the only sensible place you could have a data buffer. It's
allocated on the stack, only during the execution of the
logData() function.