What are the key differences between Drupal 7 and Pressflow 7?
I dug in to find all of the differences and looked them up on GitHub and this is what I found:


Pressflow Smart Start will forward you to the install page if the database is set up in settings.php but the database is empty, disabled by default. 

Files: includes/bootstrap.inc and sites/default/default.settings.php
Commits: https://github.com/pressflow/7/commit/fa91b2fc80741cb8c42c2db618f0ef0ad890f4cc

Allow for environmental PRESSFLOW_SETTINGS to override settings.php; settings must be entered as a JSON array.

Files: includes/bootstrap.inc
Commits: https://github.com/pressflow/7/commit/673fb0bdab618f8989365012149c76b8397f95d6 (Pull request: https://github.com/pressflow/7/pull/7), and https://github.com/pressflow/7/commit/953e6608b34975eaa0c8abed8a90f80d22f1b967

APC CSS and JS check; to prevent Drupal from constantly checking the file system for core-aggregated CSS and JS files, use APC as a key:value store instead. This is very helpful for networked file systems (and therefore very relevant to Pantheon, who happens to be the primary driver behind Pressflow since version 7).

Files: includes/common.inc (also see lines 3558 and 4949)
Commits: https://github.com/pressflow/7/commit/e2f9d2b10b4f0c5f61f120be145621913c6794a4 (Pull request: https://github.com/pressflow/7/pull/16/files, original pull request: https://github.com/pantheon-systems/drops-7/pull/4)

Allow modules to act on the js_cache before writing to disk, add a new hook called hook_js_cache_alter, and, if you use the new hook, add a note to the aggregated JavaScript that it was built with PressFlow

Files: includes/common.inc and modules/system/system.api.php
Commits: https://github.com/pressflow/7/commit/53098cf059236110716ca97c18565a178c458b43

Allow sub-second delays for lock_wait(). The calculation Drupal currently does will allow a value of 0 for the lock wait time, effectively skipping it. When PHP converts to an integer, a float will always round down. For example, as Drupal performs the operation: php -r "echo (int) 0.25 * 2;" would return 0. The Pressflow change corrects this, for example: php -r "echo (int) (0.25 * 2);" would return 5, allowing for sub-second delays to be used as an input to the function.

Files: includes/lock.inc
Commits: https://github.com/pressflow/7/commit/2cd4323946987608a660694df2c02f3cb4cce6c3



Here's a full diff as of October 2013: https://gist.github.com/alanthing/6064500