Yes, In the Ethereum blockchain, difficulty and the dynamically adjusted target are related (the difficulty is used to calculate a target). Basically to keep the Ethereum network functioning as expected its needed to maintain the average block-time (approximately 14s).
Since the number of nodes is kept changing and the strategy to find a valid hash is enumerating the possibilities in which the time to find it is totally a random, the average block- time is controlled by the Ethash algorithm by making it hard to generate a block if the last blocks have been found in shorter time than usual and making it easy if it was found in lesser time.
The process of making the block generation hard or easy is done by dynamically adjusting a target where the hash of the next block should be less than that target. That target is also expressed in terms of the difficulty at that block generation time.
As per the Ethash algorithm explained in the Github Ethereum wiki here,
Mining
The mining algorithm is defined as follows:
def mine(full_size, dataset, header, difficulty):
target = zpad(encode_int(2**256 // difficulty), 64)[::-1]
from random import randint
nonce = randint(0, 2**64)
while hashimoto_full(full_size, dataset, header, nonce) > target:
nonce = (nonce + 1) % 2**64
return nonce
Dynamically adjusted Target is calculated according to the difficulty at the moment and in mining it keeps finding a nonce while a hash less than the target is generated.