Generally yes, this approach should output the same values as the grouped convolutions.
However, currently you are assigning the complete conv weight parameter to each linear layer.
This code should work:
lins = [nn.Linear(4, 1) for _ in range(8)]
with torch.no_grad():
    for idx, lin in enumerate(lins):
        lin.weight = nn.Parameter(conv.weight[idx])
        lin.bias = nn.Parameter(conv.bias[idx].unsqueeze(0))
    
outputs = torch.stack([lin(input_concat[:, idx]) for idx, lin in enumerate(lins)], 1)
print(torch.allclose(outputs, out))
> True