you can keep your fork independent from upstream meaning you can decide to not give your "contributions" to upstream. providing source means if you do not do the changes in your fork to upstream, any of "your" users can take the changes and push it upstream provided they accept that PR but you are under no obligation to do so, just give the source.
contributing back would mean whatever change you put in your fork must reflect in upstream which is not something all upstream users would accept always but its not a requirement.