Not difference at all, in fact I expect that Pandas implements getstate so that calling pickle.dump(df) is actually the same as calling df.to_pickle().
If you search for example __getstate__ on the Pandas source code, you will find that it is implemented on several objects.