The small values are likely because the CRS of GPX files is WGS84 (measured in degrees, not meters). In which case you will need to transform the points to a projected coordinate system. Something like:

```
distance(transform($geometry, 'EPSG:4326', 'EPSG:32735'), transform(geometry(get_feature_by_id( @layer_name, $id+1)), 'EPSG:4326', 'EPSG:32735'))
```

Although this may be slow, depending how many points you have.

---

The problem with the calculated distances not corresponding with what you see on the map is that the points might not be ordered 1 to 1 with `$id` and `timestamp`. It is hard to tell without seeing your data.