Let a simple linear regression model
$$
y_i = \beta_1 + \beta_2x_i + \epsilon_i
$$
from $n$ observations, where $\epsilon_i$ are iid and of same variance $\sigma^2$.
OLS estimators of $\beta_1$ and $\beta_2$ are given by
$$
\hat{\beta}_2 = \frac{\sum(x_i-\bar{x})y_i}{\sum(x_i - \bar{x})^2}
$$
and
$$
\hat{\beta}_1 = \bar{y} - \hat{\beta}_2 \bar{x}
$$
where $\bar{x}$ denotes sample mean. From each parameter we only have one value (since we have one sample).
We do not need to estimate $\sigma^2$ to compute both $\hat{\beta_1}$ and $\hat{\beta}_2$.
However, it can be estimated with
\begin{align*}
\hat{\sigma}^2 &= \frac{1}{n-2} \sum( y_i - \hat{y}_i )^2 \\
&= \frac{1}{n-2} \sum( y_i - \hat{\beta}_1 - \hat{\beta}_2 x_i )^2
\end{align*}
But even if we only have one value for each estimator, we have the following results : for OLS estimates $\hat{\beta}_1$ and $\hat{\beta}_2$.
$$
\text{Var}(\hat{\beta}_1) =\frac{1}{n} \frac{\sigma^2 \sum x_i^2}{\sum(x_i - \bar{x})^2}
$$
and
$$
\text{Var}(\hat{\beta}_2) = \frac{\sigma^2}{\sum(x_i - \bar{x})^2}
$$
Moreover,
$$
\text{Cov}(\hat{\beta}_1,\hat{\beta}_2) = - \frac{\sigma^2 \bar{x}}{\sum(x_i - \bar{x})^2}
$$
Proof of these results can be found in any textbook on linear regression.
Since we can estimate $\sigma^2$ from the original sample, we can estimate variances of estimators, even if we only have one value of them.
These variances estimates can also be computed from bootstrapping the sample, i.e by taking samples of the original sample and by computing estimators for each sub sample. For example for $\beta_1$, if you take $K$ sub sample then you get a sample $\hat{\beta}_1^{(1)},\dots,\hat{\beta}_1^{(K)}$ from which you can empirically estimate the variance of $\hat{\beta}_1$.
Here is a simple code (in R) showing how the two methods can be used
data <- data.frame(do.call(rbind, lapply(1:500, function(i){
id=i
x <- rexp(1,1)
y <- 1 + 3*x + rnorm(1,0,1)
return(c(id,y,x))
})))
names(data) <- c("id", "y","x")
summary(lm(y ~ x, data)) ## OLS std estimates from full sample
## by bootstrapping
Nboot <- 500
list <- lapply(1:Nboot, function(i){
Ids <- sort(sample(data$id, replace=TRUE))
data.s = data[Ids,]
mod.s <- lm(y ~ x, data.s)
return(mod.s$coefficients)
})
## Bootstrap variances estimates
var(sapply(list,function(x) x[[1]]))**0.5 # beta1
var(sapply(list,function(x) x[[2]]))**0.5 # beta2
in the command
summary(lm(y ~ x, data)) ## OLS std estimates
the values in the "Std. Error" column should be close to the values computed in the last two lines