They mean two different (and equally valid) things
fn largest<T>(list: &[T]) -> T
This says "largest is a function that, for any type T, takes a slice of T and returns a T". On the other hand,
fn largest(list: &[T]) -> T
This function says "largest takes a slice of T and returns a T", where T is some specific type in scope. That is, this second definition assumes there's something of the form
struct T {}
or some other type declaration, alias, or import in scope right now, and largest only works for that type. Note that T is a horrible name for a specific type, but Rust doesn't care about good names. As far as Rust is concerned, T is a perfectly valid type. So is ndscjkdbhsgey, but please don't name your structs that either. We need the <T> to tell Rust "this is not a specific type name; it's a variable, and I'm choosing to call it T".